我想让k8s 某个服务A 只跑在 worker 4 worker5 worker6 上 ( 而且这3个节点不接受其他 服务
kubernetes 将容器指定到某些节点运行
https://www.cnblogs.com/seaskyccl/articles/16424169.html
打标签
kubectl label node node1 env-role=prod
查看标签
kubectl get nodes --show-labels
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、通过部署类型标签将worker 5, woker6 节点标记为业务应用 suno,
kubectl label nodes worker2 deploy.type=suno
kubectl label nodes worker5 deploy.type=suno
kubectl label nodes worker6 deploy.type=suno
然后用 命令来验证一下,是否有标签了
kubectl get nodes --show-labels
deploy.type=suno
然后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
如果是 kubesphere 那么如下配置:
这个是在新创建应用的时候才有,如果对已经部署好的怎么办呢?需要再 yaml 中配置如下
找到 yaml 文件
nodeSelector:
deploy.type: suno
复制上边的,连前边的空格也要复制, 然后粘贴进去就可以。 kind: Deployment