首页 > 编程知识 正文

k8s加入集群失败,kubeadm初始化失败

时间:2023-05-06 02:24:24 阅读:244070 作者:3414

前言:

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

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

这次k8s为本地环境部署,所以没有使用到云平台环境,这里的架构使用的是haproxy + keepalived作为负载,后端2台master节点 +2台node节点,有个小主意点,最好在做初始化前,设置一下kubelet的镜像源,否则会kubelet会启动失败,如下: cat > /etc/sysconfig/kubelet <<EOFKUBELET_EXTRA_ARGS="--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"EOF 报错+解决 在环境配置完成后,创建kubeadm.yaml 文件来定义集群的配置,如下: apiVersion: kubeadm.k8s.io/v1alpha2kind: MasterConfigurationkubernetesVersion: v1.12.0imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containersapiServerCertSANs:- "$master1_host"- "$master1_ip"- "127.0.0.1"api: advertiseAddress: $master1_ip controlPlaneEndpoint: $VIP:6443etcd: 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_ipcontrollerManagerExtraArgs: node-monitor-grace-period: 10s pod-eviction-timeout: 10snetworking: podSubnet: 10.10.0.0/16kubeProxy: 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 -ysleep 3if [ $? -eq 0 ];thenecho "kubelet-1.12.0 was installd"elseecho "kubelet-1.12.0 errrrrr"exit 0fiyum install kubectl-1.12.0 -ysleep 3if [ $? -eq 0 ];thenecho "kubectl-1.12.0 was installd"elseecho "kubectl-1.12.0 errrrrr"exit 0fiyum install kubeadm-1.12.0 -yif [ $? -eq 0 ];thenecho "kubeadm-1.12.0 was installd"elseecho "kubeadm-1.12.0 errrrrr"exit 0fisystemctl enable kubeletsystemctl start kubeletrpm -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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo 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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config 删除后加入集群成功。。之后的node节点加入倒是很顺利。。 小结:

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。