如何完全卸载 Kubernetes

Posted

技术标签:

【中文标题】如何完全卸载 Kubernetes【英文标题】:How to completely uninstall kubernetes 【发布时间】:2017-11-25 16:00:51 【问题描述】:

我在guide 之后使用 kubeadm 安装了 kubernetes 集群。一段时间后,我决定重新安装 K8s,但遇到了删除所有相关文件的麻烦,并且在官方网站上找不到任何文档如何删除通过 kubeadm 安装的集群。 是否有人遇到过同样的问题并知道删除所有文件和依赖项的正确方法?提前谢谢你。

有关更多信息,我使用 apt-get purge/remove 删除了 kubeadmkubectlkubelet,但是当我再次开始安装集群时,我得到了下一个错误:

[preflight] Some fatal errors occurred:
    Port 6443 is in use
    Port 10251 is in use
    Port 10252 is in use
    /etc/kubernetes/manifests is not empty
    /var/lib/kubelet is not empty
    Port 2379 is in use
    /var/lib/etcd is not empty

【问题讨论】:

在 Ubuntu 20.04 中“snap remove microk8s”似乎可以完成这项工作。 【参考方案1】:

在我的“Ubuntu 16.04”中,我使用后续步骤来完全删除和清理 Kubernetes(使用“apt-get”安装):

kubeadm reset
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*   
sudo apt-get autoremove  
sudo rm -rf ~/.kube

然后重新启动计算机。

【讨论】:

我按照这些步骤操作,但现在每次打开终端都会出现此消息:kubectl: command not found Command 'minikube' not found, did you mean: command 'minitube' from deb minitube Try: sudo apt install <deb name> @MichaelPacheco 您可能在.bashrc 或其他配置中保留了一些 minikube。 如何一次性删除docker相关的图片?全部以 k8s 开头。*【参考方案2】:

使用kubeadm reset 命令。这将取消配置 Kubernetes 集群。

【讨论】:

谢谢,但我正在寻找完全卸载 kubeadm 和所有相关依赖项来解决我的根本问题 -- ***.com/questions/44717222/… ) 在重新安装之前一切正常,我能够看到日志。所以,我考虑在第二次安装后完全从我的机器中删除 K8s,因为我认为一些错误的安装依赖项留下了,并且在下次安装后出现了同样的问题。 那么您需要删除 kubernets 和 docker rpms 并重新安装它们。 我的容器不断重启。 -f 标志强制重置并停止容器重新启动。 docker reset -f【参考方案3】:

如果您正在清除集群以便重新启动,那么,除了@rib47 所说的,我还执行以下操作以确保我的系统处于再次为kubeadm init 做好准备的状态:

kubeadm reset -f
rm -rf /etc/cni /etc/kubernetes /var/lib/dockershim /var/lib/etcd /var/lib/kubelet /var/run/kubernetes ~/.kube/*
iptables -F && iptables -X
iptables -t nat -F && iptables -t nat -X
iptables -t raw -F && iptables -t raw -X
iptables -t mangle -F && iptables -t mangle -X
systemctl restart docker

然后,您需要重新安装 docker.iokubeadmkubectlkubelet,以确保在重新初始化集群之前它们是您的发行版的最新版本。

编辑:发现 calico 将防火墙规则添加到 raw 表中,因此也需要清除。

【讨论】:

【参考方案4】:
kubeadm reset 
/*On Debian base Operating systems you can use the following command.*/
# on debian base 
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube* 


/*On CentOs distribution systems you can use the following command.*/
#on centos base
sudo yum remove kubeadm kubectl kubelet kubernetes-cni kube*


# on debian base
sudo apt-get autoremove

#on centos base
sudo yum autoremove

/For all/
sudo rm -rf ~/.kube

【讨论】:

虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释并说明适用的限制和假设。 缺乏一点解释,但这个答案应该是最重要的【参考方案5】:

您链接的指南现在有一个Tear Down 部分:

使用适当的凭据与主人交谈,运行:

kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>

然后,在要移除的节点上,重置所有 kubeadm 安装状态:

kubeadm reset

【讨论】:

安装了新的 ubuntu 18.04 - 查看 kubernetes 运行 - 我不知道它是如何安装的。如何删除 - 系统中没有 kubeadm 或 kubectl(我可以找到)【参考方案6】:

我使用以下脚本完全卸载现有的 Kubernetes 集群及其运行的 docker 容器

sudo kubeadm reset

sudo apt purge kubectl kubeadm kubelet kubernetes-cni -y
sudo apt autoremove
sudo rm -fr /etc/kubernetes/; sudo rm -fr ~/.kube/; sudo rm -fr /var/lib/etcd; sudo rm -rf /var/lib/cni/

sudo systemctl daemon-reload

sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X

# remove all running docker containers
docker rm -f `docker ps -a | grep "k8s_" | awk 'print $1'`

【讨论】:

以上是关于如何完全卸载 Kubernetes的主要内容,如果未能解决你的问题,请参考以下文章

如何完全卸载Oracle 11g数据库

如何完全卸载vmware

如何从 centos 中完全删除/卸载 gitlab-runner

如何完全卸载unity3d

如何完全卸载VS2010

如何完全卸载 SpriteKit 场景