博主最近在学习二进制部署k8s,在node上部署kubelet组件时遇到错误。
作为一个新手,遇见这个问题慌得一批,完全不知道如何下手,百度也看不懂。
这个分享一下解决得思路:
一、检查node节点,kubelet得bin命令是否拷贝
用cp 命令把二进制包里面得命令复制到你kubernetes的工作目录
二、检查node节点,ssl证书是否拷贝,跟主节点是否一致
在master节点生成了证书后,记得复制过去
三、对比跟node和master的bootstrap.kubeconfig是否一致,不一致复制master或者重新生成
补充:master重新生成bootstrap.kubeconfig命令
先查看之前的token.csv和kube-apiserver.conf,拿到两个数据
TOKEN:4fb823f13d1d21be5991b9e3a582718c KUBE_APISERVER="https://192.168.1.130:6443" # 生成 kubelet bootstrap kubeconfig 配置文件 kubectl config set-cluster kubernetes \ --certificate-authority=/opt/kubernetes/ssl/ca.pem \ --embed-certs=true \ --server=https://192.168.1.130:6443 \ --kubeconfig=bootstrap.kubeconfig kubectl config set-credentials "kubelet-bootstrap" \ --token=4fb823f13d1d21be5991b9e3a582718c \ --kubeconfig=bootstrap.kubeconfig kubectl config set-context default \ --cluster=kubernetes \ --user="kubelet-bootstrap" \ --kubeconfig=bootstrap.kubeconfig kubectl config use-context default --kubeconfig=bootstrap.kubeconfig # 拷贝到配置文件路径 scp bootstrap.kubeconfig root@paas2:/opt/kubernetes/cfg/
四、是不是没有授权 kubelet-bootstrap 用户允许请求证书
这一部非常坑,有时候自己没看清一些前辈的文档,忘了这步
在master执行一下命令,执行后在node上重启kubelet
#如果启动报错,在master节点授权boot-startboop kubectl create clusterrolebinding kubelet-bootstrap \ --clusterrole=system:node-bootstrapper \ --user=kubelet-bootstrap
node重启
systemctl start kubelet systemctl enable kubelet systemctl status kubelet
五、以上都不行请查看日志
journalctl -xefu kubelet