k8s selector_Kubernetes NodeSelector

本文介绍了如何使用kubectl命令为Kubernetes集群中的节点打标签,并通过配置Pod的nodeSelector字段,确保Pod被调度到带有特定标签的节点上。首先,使用kubectl label命令给目标Node添加zone=myapp标签,然后创建一个Deployment,其Pod模板包含nodeSelector来匹配该标签。当需要修改或删除节点标签时,可以使用kubectl label命令的--overwrite参数覆盖或者直接删除标签。如果Pod的nodeSelector条件无法在集群中找到匹配的Node,Pod将无法被调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将pod调度到指定节点

# 通过kubectl label 命令给目标Node上打上标签

[root@k8s-master yaml]# kubectl label nodes k8s-node01 zone=myapp

node/k8s-node01 labeled

# yaml 文件内容如下

[root@k8s-master yaml]# cat myapp_deployment.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

name: myapp-test

spec:

replicas: 1

template:

metadata:

labels:

app: myapp-test

spec:

containers:

- name: myapp-c

image: zdwork/myapp:v1.0

ports:

- containerPort: 8080

nodeSelector:

zone: myapp

[root@k8s-master yaml]# kubectl apply -f myapp_deployment.yaml

deployment.extensions/myapp-test created

# 查看Pod已经在指定的Node上

[root@k8s-master yaml]# kubectl get pods -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

myapp-test-7f6ff46f48-j55cw 1/1 Running 0 15s 10.244.1.173 k8s-node01

# 修改标签

[root@k8s-master yaml]# kubectl label nodes k8s-node01 zone=beijing --overwrite

# 删除标签

[root@k8s-master yaml]# kubectl label nodes k8s-node01 zone-

注意:如果我们指定了Pod的nodeSelector条件,且在集群中不存在包含相应标签的Node,则即使在集群中还有其他可供使用的Node,这个Pod也无法被调度成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值