Kubernetes 集群运维笔记

2017-04-23 阅读: Kubernetes

本篇记录在日常对Kubernetes集群管理时的一些问题和解决方法。

维护Node

k8s集群运行一段时间后,有时需要对Node节点进行维护,例如进行内核或已安装软件的升级。 在进行维护之前需要禁止新的Pod调度到该节点上,同时要将该节点上的Pod驱逐到其他的Node上(DaemonSet除外)。 使用如下的命令:

kubectl drain <node>

如果只是禁止新的Pod调度到该节点而不进行驱逐,使用如下的命令:

kubectl cordon <node>

对Node维护完成后,使用下面的命令恢复Node的调度:

kubectl uncordon

强制删除Pod

当使用kubectl删除一个Deployment时,发现该Deployment下的某个Pod一直处于Terminating状态,这个时候应该首先去查看Pod和容器的一些日志,有可能Pod正在等待回收某些资源。 如果最终还是无法解决,而这个Deployment已经下线了又不是很重要,可以使用下面的霸道的方式:

kubectl delete pod <podname> --namespace=<namspacer>  --grace-period=0 --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod <podname>  deleted

注意上面已经打印出了警告,意思是说删除的Pod相关的容器有可能成为孤儿永远的运行在集群上,因此在删除之前可以查看一下Pod跑在哪个Node上,在强制删除Pod之后,可以到对应的Node上将docker容器手动停掉。

参考

标题:Kubernetes 集群运维笔记
本文链接:https://blog.frognew.com/2017/04/kubernetes-cluster-op-cheat-sheet.html
转载请注明出处。

目录