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、技术大师!