kubernetes-给节点打标签

​         你可以约束一个 Pod 只能在特定的 Node(s) 上运行,或者优先运行在特定的节点上。有几种方法可以实现这点,推荐的方法都是用标签选择器(nodeSelector)来进行选择。通常这样的约束不是必须的,因为调度器将自动进行合理的放置(比如,将 pod 分散到节点上,而不是将 pod 放置在可用资源不足的节点上等等),但在某些情况下,你可以需要更多控制 pod 停靠的节点,例如,确保 pod 最终落在连接了 SSD 的机器上,或者将来自两个不同的服务且有大量通信的 pod 放置在同一个可用区。

给节点打上标签:

# kubectl label nodes <node_name> key1=val1 key2=val2
# kubectl label nodes 10.2.2.123 key1=val1
# kubectl label nodes 10.2.2.123 key2=val2
# kubectl label nodes 10.2.2.123 key1=val1 key2=val2

删除节点某个标签:

# kubectl label nodes <node_name> key1- key2-
# kubectl label nodes 10.2.2.123 key1-

查询节点已有的标签:

# kubectl get node --show-labels=true
NAME         STATUS                     ROLES                  AGE    VERSION   LABELS
10.2.2.120   Ready,SchedulingDisabled   master                 4d1h   v1.13.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=10.2.2.120,kubernetes.io/role=master
10.2.2.121   Ready                      metallb-speaker,node   4d1h   v1.13.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=10.2.2.121,kubernetes.io/role=node,node-role.kubernetes.io/metallb-speaker=true
10.2.2.122   Ready                      metallb-speaker,node   4d1h   v1.13.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=10.2.2.122,kubernetes.io/role=node,node-role.kubernetes.io/metallb-speaker=true
10.2.2.123   Ready                      node                   45m    v1.13.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,key1=val1,key2=val2,kubernetes.io/hostname=10.2.2.123,kubernetes.io/role=node

把pod部署到指定标签(key1=val1 key2=val2)的节点:

$ cat nginx.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        key1: val1
        key2: val2
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

其他:

我们在生产环境上,也应该给每个node打上label,所有pod都应该调度到你设置的label上。


参考:
https://stackoverflow.com/questions/34067979/how-to-delete-a-node-label-by-command-and-api
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值