「Kubernetes」- 集群修复(特殊场景)

  CREATED BY JENKINSBOT

问题描述

在测试集群中,有三个主节点,k8s-master1、k8s-master2、k8s-master3,但是k8s-master2损坏(虚拟磁盘.vmdk文件损坏)。

因此,需要重新进行初始化一个新的主节点并加入集群。

注意事项

本文只是个人特殊遭遇的概述,并不具备普适性。

系统环境

操作系统: CentOS Linux release 7.4.1708 (Core)  
网络信息: k8s-master1 10.10.50.91
  k8s-master2 10.10.50.92
  k8s-master3 10.10.50.93
  VIP 10.10.50.90
软件信息: Kubernetes 1.12.1

解决办法

我已开始很简单的以为在kubeadm join时使用--experimental-control-plane即可,但是失败了,提示错误。

而正确做法是使用相同的kubeadm-config.yaml配置文件。

# 先准备镜像

#!/bin/sh

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.12.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.12.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.12.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.12.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.2

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.12.1 k8s.gcr.io/kube-apiserver:v1.12.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.12.1 k8s.gcr.io/kube-controller-manager:v1.12.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.12.1 k8s.gcr.io/kube-scheduler:v1.12.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.12.1 k8s.gcr.io/kube-proxy:v1.12.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

# 执行初始化

然后按照 1.12, keepalived, Stacked Control Plane 一文:复制节点证书,然后初始化节点时指定「kubeadm-config.yaml」配置文件。

错误汇总

# failed to run Kubelet: unable to load bootstrap kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory
移除admin.conf配置文件即可。