首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在不同节点部署pods

在不同节点部署pods
EN

Stack Overflow用户
提问于 2019-08-12 21:48:46
回答 1查看 183关注 0票数 0

我有一个名为airflow的名称空间,它有两个pod:webserverscheduler。我想在节点A上部署scheduler,在节点B上部署webserver

在这里您可以看到部署文件:

调度程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: airflow
  name: airflow-scheduler
  labels:
    name: airflow-scheduler
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: airflow-scheduler
    spec:
      terminationGracePeriodSeconds: 60
      containers:        
        - name: scheduler
          image: 123423.dkr.ecr.us-east-1.amazonaws.com/airflow:$COMMIT_SHA1          
          volumeMounts:
          - name: logs
            mountPath: /logs          
          command: ["airflow"]
          args: ["scheduler"]
          imagePullPolicy: Always
          resources:
            limits:
              memory: "3072Mi"
            requests:
              cpu: "500m"
              memory: "2048Mi"
      volumes:
          - name: logs
            persistentVolumeClaim:
              claimName: logs

webserver服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: Service
metadata:
  name: airflow-webserver
  namespace: airflow
  labels:
    run: airflow-webserver
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    run: airflow-webserver
---    
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: airflow-webserver
  namespace: airflow
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts:
        - airflow.awesome.com.br
      secretName: airflow-crt
  rules:
    - host: airflow.awesome.com.br
      http:
        paths:
          - path: /
            backend:
              serviceName: airflow-webserver
              servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: airflow
  name: airflow-webserver
  labels:
    run: airflow-webserver
spec:
  replicas: 1
  template:
    metadata:
      labels:
        run: airflow-webserver
    spec:
      terminationGracePeriodSeconds: 60
      containers:
        - name: webserver
          image: 123423.dkr.ecr.us-east-1.amazonaws.com/airflow:$COMMIT_SHA1
          volumeMounts:
          - name: logs
            mountPath: /logs          
          ports:
            - containerPort: 8080
          command: ["airflow"]
          args: ["webserver"]
          imagePullPolicy: Always
          resources:
            limits:
              cpu: "200m"
              memory: "3072Mi"
            requests:
              cpu: "100m"
              memory: "2048Mi"              
      volumes:
          - name: logs
            persistentVolumeClaim:
              claimName: logs

怎样才能保证pods部署在不同的节点上?

edit1:

antiaffinity不工作:

我尝试在scheduler上设置podAntiAffinity,但它不起作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: name
            operator: In
            values:
            - airflow-webserver
        topologyKey: "kubernetes.io/hostname"
EN

回答 1

Stack Overflow用户

发布于 2019-08-12 22:20:03

如果您想让这些Pod在不同的节点上运行,但您并不关心具体是哪个节点,您可以使用Pod反亲和性功能。它基本上定义了pod X不应该在与pod Y相同的节点上运行(它也可以与故障域/区域等一起使用,而不仅仅是节点),并使用标签来指定pod。因此,您需要添加一些标签,并在spec部分中指定它们。有关它的更多信息,请访问Kube docs

此外,如果您还想指定它应该在哪个节点上运行,则可以使用node亲和性功能。有关更多详细信息,请参阅Kube docs

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

https://stackoverflow.com/questions/57468670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文