如何彻底卸载kubernetes

How to completely uninstall kubernetes

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

有关更多信息,我使用 [=11] 删除了 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

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

在我的 "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

重新启动计算机。

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

使用适当的凭据与 master 对话,运行:

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

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

kubeadm reset
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

如果您正在清理集群以便重新启动,那么,除了@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 table 添加了防火墙规则,因此也需要清除。

我使用以下脚本完全卸载现有的 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 }'`

如果想让它易于重复,将其制作成脚本是有意义的。这是假设您使用的是基于 OS:

的 Debian
#!/bin/sh
# Kube Admin Reset
kubeadm reset

# Remove all packages related to Kubernetes
apt remove -y kubeadm kubectl kubelet kubernetes-cni 
apt purge -y kube*

# Remove docker containers/ images ( optional if using docker)
docker image prune -a
systemctl restart docker
apt purge -y docker-engine docker docker.io docker-ce docker-ce-cli containerd containerd.io runc --allow-change-held-packages

# Remove parts

apt autoremove -y

# Remove all folder associated to kubernetes, etcd, and docker
rm -rf ~/.kube
rm -rf /etc/cni /etc/kubernetes /var/lib/dockershim /var/lib/etcd /var/lib/kubelet /var/lib/etcd2/ /var/run/kubernetes ~/.kube/* 
rm -rf /var/lib/docker /etc/docker /var/run/docker.sock
rm -f /etc/apparmor.d/docker /etc/systemd/system/etcd* 

# Delete docker group (optional)
groupdel docker

# Clear the iptables
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

注意:

这将破坏 一切 与 Kubernetes、etcd 和 docker 相关的 Node/server 这个命令运行反对!