我有3个节点
kubectl get nodes
NAME STATUS ROLES AGE VERSION
a1 Ready master 133m v1.18.6-gke.6600
a2 Ready master 132m v1.18.6-gke.6600
a3 Ready master 132m v1.18.6-gke.6600
Run Code Online (Sandbox Code Playgroud)
所以该节点的状态为“就绪”我想停止第一个节点并再次重新启动该节点
我尝试过
kubectl cordon a1
NAME STATUS ROLES AGE VERSION
a1 Ready,SchedulingDisabled master 138m v1.18.6-gke.6600
a2 Ready master 137m v1.18.6-gke.6600
a3 Ready master 137m v1.18.6-gke.6600
Run Code Online (Sandbox Code Playgroud)
但我的后端仍在工作,虽然如果在这种情况下icordon所有节点,我的后端也正在工作,但我希望我的后端服务将停止并再次恢复,我也尝试过
kubectl drain a1
error: unable to drain node "abm-cp2", aborting command...
There are pending nodes to be drained:
a2
error: cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-system/anetd-4pr9j, kube-system/etcd-defrag-8fs99, kube-system/kube-proxy-8cgpf, kube-system/localpv-mlfnf, kube-system/metallb-speaker-ljsdv, kube-system/node-exporter-dfrnq, kube-system/stackdriver-log-forwarder-t5s88
Run Code Online (Sandbox Code Playgroud)
可能您对警戒线和排水节点的含义有误解。
警戒线节点:
这意味着不再有新的容器将被调度到该节点上,但是现有正在运行的容器将保留在同一节点上。
漏极节点:
漏节点将从该特定节点删除所有容器,并将所有容器调度到另一个节点。
正如我在你想做的事情下一样
我想停止第一个节点并再次重新启动这些节点
如果您可以访问节点并通过 SSH 进入工作节点,您也可以在 SSH 之后在节点内运行:systemctl restart kubelet
或者
您可以停止部署或将部署缩减为零意味着您可以暂停或重新启动容器或 Pod
使用节点,您可以删除节点,新节点将加入 Kubernetes 集群。
kubectl delete node a1
Run Code Online (Sandbox Code Playgroud)
这与重新启动节点类似,在这种情况下,您必须使用 GKE 或 AWS 其他云提供商中的节点池。
注意:如果您正在运行应用程序的单个副本,则删除节点或重新启动kubelet可能会面临停机
我建议您在重新启动之前封锁并排空节点。
kubectl cordon a1(停止新的 Pod 调度)kubectl drain a1(删除正在运行的容器)kubectl delete node a1(从集群中删除节点)或systemctl restart kubelet(重新启动节点)关于错误:
有待清空的待处理节点:a2 错误:无法删除 DaemonSet 管理的 Pod
--ignore-daemonsets当您耗尽 Kubernetes 节点时,您需要使用密钥:
--ignore-daemonsets=false: Ignore DaemonSet-managed pods.
Run Code Online (Sandbox Code Playgroud)
所以命令会是这样的
kubectl drain node <node-name> --ignore-daemonsets
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23143 次 |
| 最近记录: |