14

k8s集群更改IP的相关问题解决

 4 years ago
source link: https://www.ishells.cn/archives/k8s-solve-ip-changed
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

k8s学习过程中遇到的几个问题,也供大家参考一下~

1、k8s集群更换IP地址导致相关问题

学习k8s时,已经搭建好了k8s集群,因为之前使用的koolshare软路由模拟内网环境,后换成nat模式之后更改了k8s节点的IP地址,导致出现问题:

Unable to fetch the kubeadm-config ConfigMap from cluster: failed to get config map: Get https://192.168.10.10:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config : dial tcp 192.168.10.10:6443: connect: connection refused

uQJbuu6.png!web

对于我来说,本来就是初接触,肯定是不想再经历一遍搭建的过程,所以:

① 修改/etc/kubernetes/文件夹里的*.conf文件,把这些文件中有旧IP的地方全都替换成你的新IP

aaMvIjy.png!web

② 修改$HOME/.kube/config文件,同样将旧的IP地址修改为新的IP地址

jYFRr2E.png!web

③ cd $HOME/.kube/cache/discovery/,这里应该有个子文件夹名字是“旧IP地址_6443”(如127.0.0.1_6443),把这个文件夹名字里的IP改成你新IP

Zvqq6bQ.png!web

④ 备份旧证书

# mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old
# mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old
# mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old
# mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old
# mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old
# mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old

6nERBfN.png!web

⑤ 更改kubeadm-config.yaml中的IP地址

因为我是指定从kubeadm-config.yaml配置文件初始化安装,所以我需要更改kubeadm-config.yaml中的IP地址( 如未则不需 )

E7niuyF.png!web

⑥ 尝试初始化集群

# kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log

vMnuQrU.png!web

这时候就会报错,端口已使用,文件已存在等问题

 [ERROR Port-10251]: Port 10251 is in use  [ERROR Port-10252]: Port 10252 is in use  [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists  [ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists  [ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists  [ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists  [ERROR Port-10250]: Port 10250 is in use  [ERROR Port-2379]: Port 2379 is in use  [ERROR Port-2380]: Port 2380 is in use  [ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty

这个问题可以使用reset命令解决(所有节点):

# kubeadm reset

运行这条命令将会还原当前节点上 kubeadm init 或者 kubeadm join 所做的所有更改。且如果使用外部 etcd,kubeadm reset 将不会删除任何 etcd 数据。这意味着如果再次使用相同的 etcd 节点运行 kubeadm init,你将看到以前的集群状态。

BrUjAbJ.png!web

⑦ 重新初始化集群

3IjmAr7.png!web

qmIrM3n.png!web

此时初始化成功

重新初始化成功之后尝试获取node状态(遇到以下问题,其实不单get命令,所有命令都会报下面这个错误):

2、Unable to connect to the server: x509: certificate signed by unknown authority

eUjIZzm.png!web

① 删除目录

重新创建集群时,用户家目录下的.kube这个目录还是存在的,我们先删除它

# rm -rf $HOME/.kube

② 然后执行以下步骤:

# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config

问题解决!

jyuQFbz.png!web

接下来的flanel、node节点的加入就不再说了(node节点也得reset,然后重新加入集群)

第三个问题是因为没有 拷贝集群管理员的配置文件到 .kube 这个目录下

3、The connection to the server localhost:8080 was refused - did you specify the right host or port?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK