4 篇文章带有标签 “node-management”

Kubernetes JSONPath实践

Node

标签信息

查看单个节点

$ kubectl get node ln1 -o=jsonpath='{.metadata.labels}{"\n"}'
map[beta.kubernetes.io/arch:amd64 beta.kubernetes.io/os:linux kubernetes.io/arch:amd64 kubernetes.io/hostname:ln1 kubernetes.io/os:linux node-role.kubernetes.io/master:]

查看集群所有节点 $ kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels}{"\n"}{end}' gpu1 map[beta.kubernetes.io/arch:amd64 beta.kubernetes.io/os:linux k8s.amazonaws.com/accelerator:vgpu kubernetes.io/arch:amd64 kubernetes.io/hostname:gpu1 kubernetes.

Kubernetes中如何恢复误删的节点

在删除标签的时候不小心删除了节点。

$ kubectl delete nodes ln6 server-type-
node "ln6" deleted
Error from server (NotFound): nodes "server-type-" not found

主节点

在 Master 节点创建加入节点用的 Token

kubeadm token create --print-join-command
W0706 08:09:27.126498  609025 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
kubeadm join 172.16.33.157:6443 --token xxx.yyyyyy     --discovery-token-ca-cert-hash sha256:zzzzzzzzzzzzzzzzzzzzzz

工作节点(被删除的)

登录 root 用户

su - root

重置 # kubeadm reset [reset] WARNING: Changes made to this host by &#3

Kubernetes中的污点和容忍度

污点

通过给节点添加污点,可以拒绝 Pod 调度到节点上。

污点样式

<key>=[value]:<effect>
  • value 可以为空
  • effect
    • NoSchedule, Pod 必须添加容忍度才能调度到这个节点。
    • PreferNoSchedule, 没有可调度的节点,Pod 会调度到这个节点。(宽松版 NoSchedule)
    • NoExecute, 不仅影响调度,也影响运行的 Pod,没有这个污点容忍度的运行 Pod 都会从这个节点删除。

例子

dedicated=foo:PreferNoSchedule
node-role.kubernetes.io/master:NoSchedule
node.kubernetes.io/unreachable:NoExecute
node.kubernetes.io/unreachable:NoSchedule

增加

kubectl taint node ln6 key1=value1:NoSchedule
# 增加多个
kubectl taint node ln6 key1=value1:NoSchedule key1=value1:PreferNoSchedule

一个 key 可以有多个 effect

删除 kubectl taint node ln6 key1=value1:NoSchedule- # 使用 key

Kubernetes中删除节点

查看集群节点

kubectl get nodes
NAME   STATUS   ROLES    AGE    VERSION
gpu1   Ready    <none>   227d   v1.18.3
gpu2   Ready    <none>   31d    v1.18.3
ln1    Ready    master   370d   v1.18.3
ln2    Ready    <none>   370d   v1.18.3
ln3    Ready    <none>   370d   v1.18.3

驱逐节点 kubectl drain gpu2 --delete-local-data --ignore-daemonsets --force node/gpu2 already cordoned WARNING: ignoring DaemonSet-managed Pods: default/dcgm-exporter-1617245566-6gvdw, kube-system/kube-proxy-jhfh5, kube-system/nvidia-device-plugin-daemonset-spflp, kube-system/weave-net-ktsbp, monitoring/kube-prometheus-stack-prometheus-node-exporter-dpnzx, rook-ceph/csi-ce