首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Kubernetes -每个节点只执行一个部署?

Azure Kubernetes -每个节点只执行一个部署?
EN

Stack Overflow用户
提问于 2020-10-13 05:40:29
回答 1查看 175关注 0票数 1

我目前正在Azure Kubernetes中为生产环境创建一个Kubernetes集群。在我的集群中,节点池中将有两个节点- pool1。

现在,我想部署2个应用程序,但是两个应用程序都将使用容器端口5000,由于某些原因,我无法更改端口。

为了简单起见,除了部署的名称之外,我为这两个部署保留了相同的清单。

部署清单- 1:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-1
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.1
        ports:
        - containerPort: 5000

部署清单- 2:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-2
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.1
        ports:
        - containerPort: 5000

由于这两个部署都使用相同的containerPort,第二个部署失败了,因为它部署在部署第一个应用程序的同一个节点上。

我想实施一个策略,在Azure Kubernetes中,每个节点只允许一个部署(但不限制代理、sidecar等)。

最后,部署-1应该去节点-x和部署-2去节点-y,请建议.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-20 11:35:09

在您的情况下,您可以使用的是nodeSelector

nodeSelector是最简单的节点选择约束形式。nodeSelectorPodSpec的一个领域。它指定了键值对的映射。为了使pod有资格在节点上运行,节点必须将每个指定的键值对作为标签(它也可以有附加的标签)。最常见的用法是一个键值对。

nodeSelector是节点选择约束的一种形式。nodeSelector是PodSpec的一个领域。这是一个简单的Pod调度特性,它允许将Pod调度到其标签与用户指定的nodeSelector标签匹配的节点上。

您还可以考虑使用亲和力与反亲和力荚间亲和力和抗亲和力。请注意,更实用的用例应该适合您的需求:

当Interpod AffinityAntiAffinity与更高级别的集合(如ReplicaSets、StatefulSets、AntiAffinity等)一起使用时,它们可能更有用。人们可以很容易地配置一组工作负载应该在相同定义的拓扑中共存,例如,相同的节点。

您可以在链接文档中找到更多的细节和示例。

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

https://stackoverflow.com/questions/64329183

复制
相关文章

相似问题

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