Kubernetes对Node label标签管理
2019-08-15 本文已影响0人
平凡的运维之路
删除Node节点
kubectl get nodes #查看全部node节点
kubectl delete node node-name #删除某个node节点
Node的隔离和恢复
隔离
-
硬件维护或者升级增加硬盘或者内存时,需要将Node进行隔离,脱离K8s调度范围,Kubernetes也提供Node纳入调度范围、和脱离调度范围
-
通过配置文件实现 脱离K8s调度范围
[root@master Nodes]# cat unschedule_node.yaml
apiVersion: v1
kind: Node
metadata:
name: My-Node
labels:
kubernetes.io/hostname: k8s-node-1
spec:
unschedulable: true
[root@master Nodes]# kubectl apply -f unschedule_node.yaml
- 命令行方式
kubectl patch node k8s-node1 -p '{"spec":"{"unschedulable":"true"}"}'
恢复
- 就是将unsechdulable的值修改为ture,实现隔离,同时恢复时,只需要将unschedulable的值修改为false即可
kubectl cordon k8s-node1 #将k8s-node1节点设置为不可调度模式
kubectl drain k8s-node1 #将当前运行在k8s-node1节点上的容器驱离
kubectl uncordon k8s-node1 #执行完维护后,将节点重新加入调度
资源对象label的操作
- 给node添加一个label标签
kubectl label node k8s-node1 role=kube-Node
- 查看label标签
kubectl get node -a -l "role=lube-Node"
- 删除label标签,只需要在命令行最后指定label的key名,并加一个减号就可以了。
kubectl label node k8s-node1 role-
- 将节点调度到指定Node
- 首先给对应需要调度的node打上标签,然后创建资源清单时添加上nodeSelector属性对应即可
kubectl label nodes k8s-node1 role=k8s-Node
[root@master NetworkPolicy]# cat pod-demo-2.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod2
labels:
app: nginx
spec:
containers:
- name: app-2
image: ikubernetes/myapp:v1
nodeSelector:
node: kube-Node