首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes多服务冲突

Kubernetes多服务冲突
EN

Stack Overflow用户
提问于 2018-12-05 17:23:50
回答 1查看 4K关注 0票数 0

我是库伯奈特斯的新手。我在亚马逊艾克斯上创建了一个Kubernetes集群。我正在尝试设置多个kubernetes服务,以便在一个集群中运行多个ASP.NET应用程序。但面临着一个奇怪的问题。

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

我已经尝试过Amazon (使用LoadBalancer服务类型)和Nginx控制器(使用ClusterIp服务类型)。此错误在两种方法中都很常见。

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

我已经检查了部署和服务状态,pod日志看起来一切都很好。完全没有错误或警告

请指导我如何纠正这个错误。以下是用于nginx入口的两个服务的yaml文件

代码语言:javascript
复制
# 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: {}

第二军种

代码语言:javascript
复制
# 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: {}

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-05 18:36:02

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

服务所针对的一组Pods (通常)由标签选择器确定

因为部署1和部署2是不同的(我认为),您应该在它们中使用不同的选择器。然后暴露部署。例如:

代码语言:javascript
复制
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

--

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deployment
  labels:
    app: hello
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello
        image: nightfury1204/hello_server
        args:
        - serve
        ports:
        - containerPort: 8080

以上两个部署nginx-deploymenthello-deployment都有不同的选择器。所以把他们暴露在服务中是不会互相伤害的。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53637647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档