03k8s集群Node管理

72 阅读2分钟

k8s集群Node管理

# 查看集群信息
kubectl cluster-info
# 查看集群节点信息
kubectl get nodes
# 查看集群节点详细信息
kubectl get nodes -o wide
#  查看节点描述详细信息
kubectl describe node master01

果是kubeasz安装,所有节点(包括master与worker)都已经可以对集群进行管理;如果是kubeadm安装,在worker节点上管理时会报错。 只要把master上的管理文件/etc/kubernetes/admin.conf拷贝到worker节点的$HOME/.kube/config就可以让worker节点也可以实现kubectl命令管理

节点标签(label)

k8s集群如果由大量节点组成,可将节点打上对应的标签,然后通过标签进行筛选及查看,更好的进行资源对象的相关选择与匹配

# 查看节点标签信息
kubectl get node --show-labels
# 设置节点标签
# 为节点worker01打一个'region=huanai'的标签
kubectl label node worker01 region=huanai

kubectl get node --show-labels
NAME       STATUS   ROLES           AGE   VERSION   LABELS
master01   Ready    control-plane   39h   v1.26.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master01,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
worker01   Ready    <none>          38h   v1.26.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker01,kubernetes.io/os=linux,region=huanai
worker02   Ready    <none>          38h   v1.26.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker02,kubernetes.io/os=linux

# 查看所有节点region的标签
kubectl get nodes -L region
NAME       STATUS   ROLES           AGE   VERSION   REGION
master01   Ready    control-plane   39h   v1.26.9
worker01   Ready    <none>          38h   v1.26.9   huanai
worker02   Ready    <none>          38h   v1.26.9

# 也可以加其它的多维度标签,用于不同的需要区分的场景。如把master01标签为华南区,A机房,测试环境,游戏业务
kubectl label node master01 zone=A env=test bussiness=game

kubectl get nodes master01 --show-labels
NAME       STATUS   ROLES           AGE   VERSION   LABELS
master01   Ready    control-plane   39h   v1.26.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,bussiness=game,env=test,kubernetes.io/arch=amd64,kubernetes.io/hostname=master01,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=,zone=A

# 显示节点的相应标签
kubectl get nodes -L region,zone
NAME       STATUS   ROLES           AGE   VERSION   REGION   ZONE
master01   Ready    control-plane   39h   v1.26.9            A
worker01   Ready    <none>          38h   v1.26.9   huanai
worker02   Ready    <none>          38h   v1.26.9

# 查找'region=huanai'的节点
kubectl get nodes -l region=huanai
NAME       STATUS   ROLES    AGE   VERSION
worker01   Ready    <none>   38h   v1.26.9

# 标签的修改,加上--overwrite=true覆盖原标签的value进行修改操作
kubectl label node master01 bussiness=ad --overwrite=true

kubectl get nodes -L bussiness
NAME       STATUS   ROLES           AGE   VERSION   BUSSINESS
master01   Ready    control-plane   39h   v1.26.9   ad
worker01   Ready    <none>          39h   v1.26.9
worker02   Ready    <none>          39h   v1.26.9

# 标签的删除
# 使用key加一个减号的写法来取消标签
kubectl label node worker01 region-

标签选择器

标签选择器主要有2类:

  • 等值关系: =, !=
  • 集合关系: KEY in {VALUE1, VALUE2...}
kubectl label node worker01 env=test1

kubectl label node worker02 env=test2

kubectl get node -l "env in(test1,test2)"
NAME       STATUS   ROLES    AGE   VERSION
worker01   Ready    <none>   39h   v1.26.9
worker02   Ready    <none>   39h   v1.26.9