目录
在node节点执行kubeadm join命令时,提示主机名问题
子节点通过kubeadm join 提示docker版本的问题
集群的kubeadm重新生成生成的tokern
(1)当kubeadm join 时,提示超时,提示信息如下,表示不能验证API服务器的身份:超时5m0s后中止连接到API服务器,需要重新生token
超时信息
error execution phase preflight: couldn’t validate the identity of the API Server: abort connecting to API servers after timeout of 5m0s
在master节点重新生成token命令,然后在node子节点中执行kubuadm join命令
kubeadm token create --print-join-command
如果网忘了证书的秘钥,可以在master节点执行以下命令
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
在node节点执行kubeadm join命令时,提示主机名问题

[root@k8s_node1 ~]# kubeadm join k8s-api:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:792894d89dc7be5df509e0ea472f3c53b30a9ea54037fd2f1a226ec3e1273d14
nodeRegistration.name: Invalid value: "k8s_node1": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
To see the stack trace of this error execute with --v=5 or higher
原因是:hostname 和 DNS 的解析规则不匹配导致报错,原因是 hostname 和 DNS 的解析规则不匹配, 不能有除-和 . 之外的特殊字符存在。注意是主机名hostname,不可有-或者.
(1)执行hostname命令查看hostname
hostname
(2) 执行hostnamectl set-hostname <主机名>命令更改主机名,<主机名>可自定义,例如:
hostnamectl set-hostname centos7
如果修改hostname后报主机名找不到,可以直接修改/etc/hosts文件将hostname的解析地址加上去
-
子节点通过kubeadm join 存在的问题
-
1.子节kubeadm join 点提示docker版本的问题

[preflight] Running pre-flight checks
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.16. Latest validated version: 19.03
error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID "abcdef"
To see the stack trace of this error execute with --v=5 or higher
执行降级命令,以下${version}根据情况设置docker的版本编号
yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version}
例如将docker由 versions: 20.10.16. 降为version: 19.03
yum downgrade --setopt=obsoletes=0 -y docker-ce-19.03.13-3.el7 docker-ce-cli-19.03.13-3.el7 containerd.io
可能会出现镜像文件或者容器丢失情况,这是因为降级之前,以前的docker服务可能被指定了文件存放路径,接下来把降级后的启动服务文件修改到原来的文件路径即可。
找到之前存放的docker镜像文件,我的环境在/opt/data/docker,请以自己环境为准。
操作如下命令更改镜像存储位置,重新读取
root@localhost deploy]# sed -i "s#-H fd:#-g /opt/data/docker -H fd:#g" /lib/systemd/system/docker.service
[root@localhost deploy]# systemctl daemon-reload
[root@localhost deploy]# systemctl restart docker
再查看镜像文件已读取到
[root@localhost deploy]# docker images
2、子节点kubeadm join 时提示文件已经存在
解决方法:删除提示已存在的证书及配置文件,然后重新kubeadm join 加入主节点
rm -f /etc/kubernetes/kubelet.conf
rm -f /etc/kubernetes/pki/ca.crt
kubeadm join 192.168.91.20:6443 --token uqodg4.bbdf1qeabf6mhs5n --discovery-token-ca-cert-hash sha256:ea22b11fda5a349b1f69726e13c01e7740e3cb237ff6a7253ccb046ebd139507
如果kubeadm join 出现10250端口被占用的问题,如下:
解决方法,可以查询端口被那个应用占用了
如果没有安装net-tools工具,可以执行sudo yum install -y net-tools -q
netstat -ntpl | grep 10250
执行命名后,显示10250端口被kubelet占用了
可以执行以下命令,重启kubelet
systemctl restart kubelet
然后执行命令netstat -ntpl | grep 10250,查看端口是否被解除。如果解除,可以重新执行kubeadm join命名,加入master节点。
calico的controllers没有启动
执行以下命令查询 pod的状态
kubectl get pods -n kube-system
解决方案:
(1)修改calico.yaml文件中的在DaemonSet部分 calico-node的pod的变量中,修改CALICO_IPV4POOL_IPIP值为off,如下:
- name: CALICO_IPV4POOL_IPIP
#value: "Always"
value: "off"
(2)修改pod的网段,修改CALICO_IPV4POOL_CIDR为k8s集群的pod网段
同样也在DaemonSet 中, calico-node的pod的变量里,修改如下:
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
(3)删除calico对象,在master执行以下命令
kubectl delete -f calico.yaml
(4)新建calico对象
kubectl apply -f calico.yaml


4203

被折叠的 条评论
为什么被折叠?



