kubernetes - 部署亲和性

标签 kubernetes affinity

我有 3 个节点的 k8s 集群

我想要一个带有 3 个副本的示例部署作为后续,所以每个 pod 都被安排在不同的节点中?

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

最佳答案

您可以使用 podAntiAffinity 来确保部署的相同 pod 永远不应在同一节点上运行(取决于拓扑)。查看以下文档Assigning Pods to Nodes .

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  labels:
    app: tomcat
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:9.0
        ports:
        - containerPort: 80
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: "app"
                operator: In
                values:
                - tomcat
            topologyKey: "kubernetes.io/hostname"

关于kubernetes - 部署亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62292476/

相关文章:

kubernetes - 是否可以/可以在 Kubernetes 之外运行 Prometheus、Loki、Grafana?

kubernetes - 是否可以从 kubernetes 的容器内获取容器名称?

linux - CPU 亲和性是否在系统调用之间强制执行?

multithreading - 通过设置亲和性在单核上运行多线程程序的性能?

kubernetes - 在 Kubernetes 上运行 Gitlab CI 运行程序时 pod 的挂起状态

kubernetes - 在列表项前面添加字符串并在 Ansible 中将其转换为 JSON

linux - 如何设置内核线程的亲和性?

linux - sched_getcpu() 在 Linux 上可靠吗?

windows-xp - 如何在 Windows XP 中的可执行文件上设置处理器关联?

linux - azure aks 无法从 acr 中提取图像