重置 Kubernetes 集群

And*_*rei 5 cluster-computing docker kubernetes

我的网络中有六台台式机,我想构建两个 Kubernetes 集群。每台机器都安装了 Ubuntu 16.04 LTS。最初,所有机器都是一个集群的一部分。但是,我删除了三台机器来设置另一个集群,并在每台机器上执行以下命令:

RESET COMMAND:
sudo kubeadm reset -f && 
 sudo systemctl stop kubelet && 
 sudo systemctl stop docker && 
 sudo rm -rf /var/lib/cni/ && 
 sudo rm -rf /var/lib/kubelet/* && 
 sudo rm -rf /etc/cni/ && 
 sudo ifconfig cni0 down && 
 sudo ifconfig flannel.1 down && 
 sudo ifconfig docker0 down && 
 sudo ip link delete cni0 && 
 sudo ip link delete flannel.1
Run Code Online (Sandbox Code Playgroud)

在此之后,我重新启动了每台机器,并通过设置主节点继续设置新集群:

INSTALL COMMAND:
sudo kubeadm init phase certs all && 
 sudo kubeadm init phase kubeconfig all && 
 sudo kubeadm init phase control-plane all --pod-network-cidr 10.244.0.0/16 &&
 sudo sed -i 's/initialDelaySeconds: [0-9][0-9]/initialDelaySeconds: 240/g' /etc/kubernetes/manifests/kube-apiserver.yaml &&
 sudo sed -i 's/failureThreshold: [0-9]/failureThreshold: 18/g' /etc/kubernetes/manifests/kube-apiserver.yaml &&
 sudo sed -i 's/timeoutSeconds: [0-9][0-9]/timeoutSeconds: 20/g' /etc/kubernetes/manifests/kube-apiserver.yaml &&
 sudo kubeadm init \
   --v=1 \
   --skip-phases=certs,kubeconfig,control-plane \
   --ignore-preflight-errors=all \
   --pod-network-cidr 10.244.0.0/16  
Run Code Online (Sandbox Code Playgroud)

在此之后,我还安装了法兰绒。master安装成功后,我继续kubeadm join添加另外两台机器。添加这些机器后,我在主节点上安装了 NGINX-Ingress。

现在,我想重置集群并再次重新进行此设置。我使用 RESET COMMAND 重置每台机器,并在主节点上继续执行 INSTALL 命令。但是,在我运行 INSTALL 命令并运行之后,kubectl get pods --all-namespaces我仍然可以看到之前安装的 pod:

NAMESPACE       NAME                              READY   STATUS              RESTARTS   AGE
kube-system     coredns-fb8b8dccf-h5hhk           0/1     ContainerCreating   1          20h
kube-system     coredns-fb8b8dccf-jblmv           0/1     ContainerCreating   1          20h
kube-system     etcd-ubuntu6                      1/1     Running             0          19h
kube-system     kube-apiserver-ubuntu6            1/1     Running             0          76m
kube-system     kube-controller-manager-ubuntu6   0/1     CrashLoopBackOff    7          75m
kube-system     kube-flannel-ds-amd64-4pqq6       1/1     Running             0          20h
kube-system     kube-flannel-ds-amd64-dvfmp       0/1     CrashLoopBackOff    7          20h
kube-system     kube-flannel-ds-amd64-dz9st       1/1     Terminating         0          20h
kube-system     kube-proxy-9vfjx                  1/1     Running             0          20h
kube-system     kube-proxy-q5c86                  1/1     Running             0          20h
kube-system     kube-proxy-zlw4v                  1/1     Running             0          20h
kube-system     kube-scheduler-ubuntu6            1/1     Running             0          76m
nginx-ingress   nginx-ingress-6957586bf6-fg2tt    0/1     Terminating         22         19h
Run Code Online (Sandbox Code Playgroud)

为什么我会看到之前安装的 Pod?

Vit*_*Vit 2

所以,是的,基本上当您使用kubeadm创建单个控制平面集群时- 您正在安装具有单个控制平面节点的集群,并在其上运行单个 etcd 数据库。

kubeadm 使用的默认 etcd 目录位于/var/lib/etcd控制平面节点上。您应该清理它以避免恢复以前的集群配置。

顺便说一句, k8s 1.15 也存在同样的问题。它应该修复1.15.1 https://github.com/kubernetes/sig-release/blob/3a3c9f92ef484656f0cb4867f32491777d629952/releases/patch-releases.md#115