Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Kubernetes多服务冲突_Amazon Web Services_Asp.net Core_Kubernetes_Kubernetes Ingress_Amazon Eks - Fatal编程技术网

Amazon web services Kubernetes多服务冲突

Amazon web services Kubernetes多服务冲突,amazon-web-services,asp.net-core,kubernetes,kubernetes-ingress,amazon-eks,Amazon Web Services,Asp.net Core,Kubernetes,Kubernetes Ingress,Amazon Eks,我是Kubernetes的新手。我在Amazon上创建了一个Kubernetes集群。 我正在尝试设置多个kubernetes服务,以便在一个集群中运行多个ASP.NET应用程序。但是面对一个奇怪的问题 只有一项服务时,一切正常。但每当我为第二个应用程序创建第二个服务时,就会产生冲突。冲突是有时服务1 url加载服务2应用程序,有时它加载服务1应用程序,而在简单页面重新加载时服务2 url也会发生同样的情况 我已经尝试了Amazon Classic ELB(具有LoadBalancer服务类型)

我是Kubernetes的新手。我在Amazon上创建了一个Kubernetes集群。 我正在尝试设置多个kubernetes服务,以便在一个集群中运行多个ASP.NET应用程序。但是面对一个奇怪的问题

只有一项服务时,一切正常。但每当我为第二个应用程序创建第二个服务时,就会产生冲突。冲突是有时服务1 url加载服务2应用程序,有时它加载服务1应用程序,而在简单页面重新加载时服务2 url也会发生同样的情况

我已经尝试了Amazon Classic ELB(具有LoadBalancer服务类型)和Nginx Ingress controller(具有ClusterIp服务类型)。这种错误在两种方法中都很常见

服务和部署都在端口80上运行,我甚至为服务和部署尝试了不同的端口,以避免端口冲突,但问题相同

我已经检查了部署和服务状态,pod日志显示一切正常。没有任何错误或警告

请指导我如何修复此错误。 以下是nginx入口的两个服务的yaml文件

# Service 1 for deployment 1 (container port: 1120)
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2018-12-05T14:54:21Z
  labels:
    run: load-balancer-example
  name: app1-svc
  namespace: default
  resourceVersion: "463919"
  selfLink: /api/v1/namespaces/default/services/app1-svc
  uid: a*****-****-****-****-**********c
spec:
  clusterIP: 10.100.102.224
  ports:
  - port: 1120
    protocol: TCP
    targetPort: 1120
  selector:
    run: load-balancer-example
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
第二次发球

# Service 2 for deployment 2 (container port: 80)
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2018-12-05T10:13:33Z
  labels:
    run: load-balancer-example
  name: app2-svc
  namespace: default
  resourceVersion: "437188"
  selfLink: /api/v1/namespaces/default/services/app2-svc
  uid: 6******-****-****-****-************0
spec:
  clusterIP: 10.100.65.46
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: load-balancer-example
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

谢谢

问题在于服务中的选择器。它们都有相同的选择器,这就是您面临该问题的原因。所以它们都指向同一组豆荚

服务的目标POD集(通常)由标签选择器确定

由于deployemnt 1和deployment 2是不同的(我认为),您应该在它们中使用不同的选择器。然后公开部署。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.4
        ports:
        - containerPort: 80
--

以上两种部署
nginx部署
hello部署
具有不同的选择器。因此,将它们暴露在服务环境中不会使它们相互冲突


当您使用
kubectl expose deployment app1 deployment--type=ClusterIP--name=app1 svc
公开部署时,服务将具有与部署相同的选择器。

问题在于服务中的选择器。它们都有相同的选择器,这就是您面临该问题的原因。所以它们都指向同一组豆荚

服务的目标POD集(通常)由标签选择器确定

由于deployemnt 1和deployment 2是不同的(我认为),您应该在它们中使用不同的选择器。然后公开部署。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.4
        ports:
        - containerPort: 80
--

以上两种部署
nginx部署
hello部署
具有不同的选择器。因此,将它们暴露在服务环境中不会使它们相互冲突


当您使用
kubectl expose deployment app1 deployment--type=ClusterIP--name=app1 svc
公开部署时,服务将具有与部署相同的选择器。

您能提供服务YAML吗?感谢您的回复。下面是我用来创建服务的命令
kubectl expose deployment app1 deployment--type=ClusterIP--name=app1 svc
我想知道的是服务和部署中使用的标签选择器。这就是为什么要问YAML,而不是命令。对不起,我刚刚用YAML更新了问题。如果您还需要什么,请告诉我。您能提供yamls服务吗?谢谢回复。下面是我用来创建服务的命令
kubectl expose deployment app1 deployment--type=ClusterIP--name=app1 svc
我想知道的是服务和部署中使用的标签选择器。这就是为什么要问YAML,而不是命令。对不起,我刚刚用YAML更新了问题。如果您还需要什么,请告诉我。非常感谢您的简短回答。这真的很有帮助。非常感谢。再次感谢:-)干杯非常感谢你的简短回答。这真的很有帮助。非常感谢。再次感谢:-)干杯