kubernetes 将容器指定到某些节点运行

假定部署的kubernetes集群有5个节点,一个master节点和4个work节点,默认master节点不调度Pod,所有Pod均在4个work节点上调度Pod。简单列表如下:

hostname
role
node1
master
node2
work
node3 work
node4 work
node5 work

现需要部署2个容器应用A和B,其中A属于业务应用(例如springboot web应用),B属于组件(例如redis、zookeeper等),需要将A应用指定到node2和node3节点上,将应用B指定到node4和node5节点上,通过这种方式将组件和业务应用进行隔离,具体实现如下:

1、查看当前集群节点标签信息:

查看当前集群节点标签信息

kubectl get nodes --show-labels

可以看到每个节点默认初始标签大致如下

beta.kubernetes.io/arch=amd64,
beta.kubernetes.io/os=linux,
kubernetes.io/arch=amd64,
kubernetes.io/hostname=node2,
kubernetes.io/os=linux
2、通过部署类型标签将node2、node3节点标记为业务应用,将node4、node5标记为组件应用:

kubectl label nodes node2 deploy.type=biz_app
kubectl label nodes node3 deploy.type=biz_app
kubectl label nodes node4 deploy.type=assembly_app
kubectl label nodes node5 deploy.type=assembly_app

确认标签是否生效

kubectl get nodes --show-labels
3、然后Pod指定配置如下:

点击查看代码
apiVersion: apps/v1
kind: Pod
metadata:
  name: nginx-pod
  namespace: my-namespace
  labels:
    app: nginx-pod
spec:
     nodeSelector:
       deploy.type: assembly_app
     restartPolicy: Always
     containers:
     - name: nginx
       image: "nginx"
       ports:
        - containerPort: 80

本星球包含了海量运维、安全、设计微服务k8s、Python干货分享、提供最完整的指引,帮助你轻松掌握ChatGPT理论和实战应用场景、如何变现、如何正确使用AI!!时代赋予的机遇,你可躺平,但生活从不手软,你赚的每一分钱都是成长的变现!!赶紧抓住这个巨大的风口红利,建议跟着这个课程来学习,相信能带你成为ChatGPT、技术大师!

posted @ 2022-06-29 17:07  seaskyccl  阅读(741)  评论(0编辑  收藏  举报