故障集----使用kubeadm部署k8s集群(初始化报错、加入集群报错,kubelet起不来)

前言:

之前介绍了kubernetes集群的二进制部署方法,近期又使用kubeadm部署了k8s,这里记录一下部署过程中出现的问题以及解决方式

架构简介

  • 这里简单介绍一下架构,因为是错误集,所以这里使用的是简易的架构,同时暂不详细说明部署流程

故障集----使用kubeadm部署k8s集群(初始化报错、加入集群报错,kubelet起不来)_第1张图片

  • 这次k8s为本地环境部署,所以没有使用到云平台环境,这里的架构使用的是haproxy + keepalived作为负载,后端2台master节点 +2台node节点,有个小主意点,最好在做初始化前,设置一下kubelet的镜像源,否则会kubelet会启动失败,如下:
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF

报错+解决

  • 在环境配置完成后,创建kubeadm.yaml 文件来定义集群的配置,如下:
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
kubernetesVersion: v1.12.0
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
apiServerCertSANs:
- "$master1_host"
- "$master1_ip"
- "127.0.0.1"

api:
  advertiseAddress: $master1_ip
  controlPlaneEndpoint: $VIP:6443

etcd:
  local:
    extraArgs:
      listen-client-urls: "https://127.0.0.1:2379,https://$master1_ip:2379"
      advertise-client-urls: "https://$master1_ip:2379"
      listen-peer-urls: "https://$master1_ip:2380"
      initial-advertise-peer-urls: "https://$master1_ip:2380"
      initial-cluster: "$master1_host=https://$master1_ip:2380"
    serverCertSANs:
      - $master1_host
      - $master1_ip
    peerCertSANs:
      - $master1_host
      - $master1_ip

controllerManagerExtraArgs:
  node-monitor-grace-period: 10s
  pod-eviction-timeout: 10s

networking:
  podSubnet: 10.10.0.0/16

kubeProxy:
  config:
    #mode: ipvs
    #mode: iptables
  • 先下载镜像:kubeadm config images pull --config /root/kubedeamconfig.yaml (emmmm,一切顺利)
  • 再执行kubeadm -init --config /root/kubeadm.yaml 初始化的时候,报了以下错误(o_O)
ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.18.5" Control plane version: "1.12.2"
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

This error is likely caused by:
	- The kubelet is not running
	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
  • 壹: 很好…第一个是kubelet版本的问题…使用rpm -qa | grep kube之后,发现的确版本过高…
  • 解决:删除kubelet,重新安装,这里有个小的注意点,因为我是使用一键部署的脚本安装的,所以kube组件安装的顺序会有点要求:
kube_install(){
yum install kubelet-1.12.0 -y
sleep 3
if [ $? -eq 0 ];then
echo "kubelet-1.12.0 was installd"
else
echo "kubelet-1.12.0 errrrrr"
exit 0
fi

yum install kubectl-1.12.0 -y
sleep 3
if [ $? -eq 0 ];then
echo "kubectl-1.12.0 was installd"
else
echo "kubectl-1.12.0 errrrrr"
exit 0
fi
yum install kubeadm-1.12.0 -y
if [ $? -eq 0 ];then
echo "kubeadm-1.12.0 was installd"
else
echo "kubeadm-1.12.0 errrrrr"
exit 0
fi
systemctl enable kubelet
systemctl start kubelet
rpm -qa | grep kube

我是按照这个顺序安装来保证版本一致的。。中间每个组件安装间隔了3秒。

  • 贰: ok,然后继续初始化吧,接着碰到了第二个问题:初始化失败,提示端口冲突+各种yaml文件不存在,使用 journalctl -xe 查看日志显示的是 “ 找不到“master01”(主机名)”
  • 好嘞,检查一轮以下配置:
  • ① /etc/hosts 配置的 IP HOSTNAME 是否有误
  • ② 检查kubeadm.yaml中的变量是否写错
  • ③ 检查haproxy配置文件中backend kubernetes-apiserver字段中的 HOSTNAME 和 IP:PORT是否有误
  • ④ kubelet的镜像源木有设置(也是本次的报错源头),以上已做介绍。。这里添加一下即可
  • 好了…添加完了,这里kubeadm reset 重置一下,再次尝试初始化,这次初始化成功,执行提示操作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 叁 :好的,这里master1节点配置完成,继续配置master2节点,master节点的初始化环境和master1相同,只要kubeadm join ****** 加入集群即可~
  • 背景:因为up…不…博主在加入集群的时候操作失误了几次。。导致kubeadm reset 了几次。。再次尝试加入集群时报错:
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
  • 说是ca证书不存在。。明明是有的,但是还会报这个问题
  • 解决:后来找了资料已经官网等等才知道。。
  • kubeadm reset 重置后再尝试加入集群(因为之前尝试过加入集群而失败产生的遗留文件所导致的)
  • 因为加入集群时需创建以下文件,如需kubeadm reset 需要手动删除以下文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 删除后加入集群成功。。之后的node节点加入倒是很顺利。。

小结:

因为初次使用kubeadm部署k8s集群没有经验,在初始化的时候一直发现kubelet 状态一直是down的,原本一直以为有问题,但是后来知道。。原来在初始化过程中kubelet会一直自动重启 0.o
kubeadm 部署的过程,emm会考虑之后补上~ 如有啥建议的话~可以随时联系up…不…博主

你可能感兴趣的:(故障集)