如何在从节点执行kubectl命令
1、将master的admin.conf 文件拷贝到 node节点
scp root@192.168.3.11:/etc/kubernetes/admin.conf /etc/kubernetes/
2、配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
3、测试
kubectl get pods -A
使用命令强制删除
Pod的状态为"Marking for deletion"表示该Pod正在被标记为待删除状态,但实际上并没有被删除。这可能是因为以下原因之一:
删除操作被阻塞:可能是由于某些资源或容器正在使用该Pod,导致删除操作被阻塞。您可以尝试使用kubectl get pods [-n namespace]命令查看Pod的资源使用情况,并尝试删除其他Pod以释放资源。
容器状态未正常:Pod中的某些容器可能处于非正常状态,例如运行时错误或停止状态。这可能导致删除操作无法正常执行。您可以检查Pod的日志以查看是否有任何错误消息。
节点故障:Pod可能位于一个故障的节点上,导致删除操作无法正常执行。您可以尝试使用kubectl get nodes命令查看节点的状态,并尝试将Pod移动到另一个节点上。
如果您尝试删除一个已经标记为待删除状态的Pod,但仍然无法删除,您可以尝试以下操作:
使用kubectl delete命令强制删除Pod:kubectl delete pod xxx -n xxx --force
使用kubectl delete命令删除Pod及其所有关联的资源:kubectl delete pod xxx -n xxx --grace-period=0 --force
请注意,强制删除Pod可能会导致数据丢失或损坏,因此请谨慎使用。
如果强制删除还不行,设置finalizers为空
(如果一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新。kubernetes还提供了一种在容器运行时,直接对容器进行修改的方式,就是patch命令。)
kubectl patch pod xxx -n xxx -p ‘{“metadata”:{“finalizers”:null}}’
这样再执行强制删除pod就可以删除了。
参考链接:
https://blog.youkuaiyun.com/weixin_59410846/article/details/125886806 https://blog.youkuaiyun.com/xiuqingzhouyang/article/details/129084027