k8s二进制部署v1.22.15,flannel安装排错过程
这是因为没有安装网络插件。发现pod一致启动不了,一致处于失败,重启,失败,重启的状态。二进制部署的k8sv1.22.15,
·
二进制部署的k8sv1.22.15,
[root@matser ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 NotReady <none> 5h5m v1.22.15
node2 NotReady <none> 5h4m v1.22.15
[root@matser ~]#
这是因为没有安装网络插件。现在我们来安装flannel 网络插件:
wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
发现pod一致启动不了,一致处于失败,重启,失败,重启的状态。
#查看kubelet的日志,发现下面的报错信息
11月 02 19:08:41 node1 kubelet[29281]: E1102 19:08:41.359431 29281 pod_workers.go:951]
"Error syncing pod, skipping" err="failed to \"StartContainer\"
for \"kube-flannel\" with CrashLoopBackOff: \"back-off 20s restarting failed
container=kube-flannel pod=kube-flannel-ds-26dlf_kube-flannel(daa2f808-65df-410c-8436-b1beaecb731d)\""
pod="kube-flannel/kube-flannel-ds-26dlf" podUID=daa2f808-65df-410c-8436-b1beaecb731d
#查看pod的日志,发现下面的报错
Failed to create SubnetManager: error retrieving pod spec for
'kube-flannel/kube-flannel-ds-26dlf': Get "https://10.0.0.1:443/api/v1/namespaces/kube-flannel/pods/kube-flannel-ds-26dlf": x509: certificate is valid for 192.168.118.140, 10.11.0.1, not 10.0.0.1
#这该死的字面有个10.0.0.1这个ip的
grep '10.0.0.1' kube-flannel.yml #既不是kube-flannel.yml里面定义的
grep -r '10.0.0.1' /opt/kubernetes/config/* #又不是配置证书的时候定义的
grep -r '10.0.0.1' /opt/TLS/k8s/*
#嘛的,这个10.0.0.1 IP到底是哪里的呢?它怎么要用这个IP+443端口去连apisever呢?冷静冷静,仔细想想,这个IP既不是kube-flannel.yml里面
#定义的,也不是部署证书时或创建配置文件时指定的,那回事哪里的呢?我们配置配置证书或创建配置文件时,也没指定这个IP。
#我们配置的api-server的端口是6443,等下,443端口,443端口不是k8s集群里面service的端口吗,靠,知道了,10.0.0.1是k8s创建的第一个service的ip地址。
#查看kube-apiserver配置文件,果然,service的ip定义范围--service-cluster-ip-range=10.0.0.0/24
#那么它既然要这个ip去访问api-server,所以我们需要把这个service的IP加入server-csr.json证书。如下:
```bash
cat > server-csr.json << EOF
{
"CN": "kubernetes",
"hosts": [
"192.168.118.140", #这个是主机IP地址,必须写上
"10.0.0.1", #这个是service的第一个地址,必须写上(我就是没写才导致后面部署网络插件踩坑的)
"10.11.0.1" #这个是预留的
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Shenzhen",
"ST": "Shenzhen",
"O": "k8s",
"OU": "System"
}
]
}
EOF
#重新使用命令生成证书,然后替换原来的证书,重启api-server即可,重新部署网络插件,终于正常。
更多推荐
已为社区贡献32条内容
所有评论(0)