目的:解決pod部署成功后,只能在node節(jié)點(diǎn)訪問,而master節(jié)點(diǎn)無法訪問
原因:集群搭建時(shí),沒有配置公網(wǎng)進(jìn)行kubectl操作,從而導(dǎo)致系統(tǒng)默認(rèn)node節(jié)點(diǎn),使用內(nèi)網(wǎng)IP加入k8s集群!如下:
解決方案:圍繞公網(wǎng)IP進(jìn)行搭建即可,其實(shí)就是在傳統(tǒng)的搭建步驟下,給master節(jié)點(diǎn)和node節(jié)點(diǎn)添加下公網(wǎng)網(wǎng)卡就可以了
1、機(jī)器IP清單
- 我的兩臺(tái)服務(wù)器的都是云服務(wù)器
- 我的master節(jié)點(diǎn)IP為111.230開頭的
- 我只有一個(gè)node節(jié)點(diǎn),IP為192.168.9.96(該IP與calico網(wǎng)段沖突)
2、重置master節(jié)點(diǎn)的kubeadm
kubeadm reset
3、在master節(jié)點(diǎn)上創(chuàng)建公網(wǎng)的虛擬網(wǎng)卡
- 看一下你的公網(wǎng)IP是否在機(jī)器中存在
ip a | grep 你的公網(wǎng)IP
- 如果沒有就執(zhí)行下面這段代碼新增一個(gè)和公網(wǎng)IP一樣的虛擬網(wǎng)卡IP?
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
BOOTPROTO=static
DEVICE=eth0:1
IPADDR=111.230.19.178 #這里是你的公網(wǎng)IP
PREFIX=32
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
EOF
- 重置網(wǎng)絡(luò)
systemctl restart network?
重置失敗就直接去重啟電腦就可以了?
4、初始化master主節(jié)點(diǎn)
- 注意pod的網(wǎng)絡(luò)范圍為172.17.0.0/16,因?yàn)槲矣幸慌_(tái)機(jī)器是192.168開頭的
kubeadm init \
--apiserver-advertise-address=111.230.19.178 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=172.17.0.0/16
初始化成功后的日志:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
? mkdir -p $HOME/.kube
? sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
? sudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:
? export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
? https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:? kubeadm join cluster-endpoint:6443 --token wxt6jz.xf9g3va8xpggfoc9 \
? ? --discovery-token-ca-cert-hash sha256:2326cb4e54fe2fd92d112e01d1caf3e58735665e480f3d5aa364d47e52088b7c \
? ? --control-planeThen you can join any number of worker nodes by running the following on each as root:
kubeadm join cluster-endpoint:6443 --token wxt6jz.xf9g3va8xpggfoc9 \
? ? --discovery-token-ca-cert-hash sha256:2326cb4e54fe2fd92d112e01d1caf3e58735665e480f3d5aa364d47e52088b7c?
5、修改calico.yaml中的網(wǎng)段
搜索:192.168
取消注釋,并修改網(wǎng)段:
- 與步驟3中的pod-network-cidr保持一致
6、kubectl應(yīng)用calico
7、重置node節(jié)點(diǎn)
kubeadm reset
8、在node節(jié)點(diǎn)上創(chuàng)建公網(wǎng)的虛擬網(wǎng)卡
- 看一下你的公網(wǎng)IP是否在機(jī)器中存在
ip a | grep 你的公網(wǎng)IP
- 如果沒有就執(zhí)行下面這段代碼新增一個(gè)和公網(wǎng)IP一樣的虛擬網(wǎng)卡IP?
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
BOOTPROTO=static
DEVICE=eth0:1
IPADDR=139.159.228.xx #這里是你的公網(wǎng)IP
PREFIX=32
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
EOF
- 重置網(wǎng)絡(luò)
systemctl restart network?
重置失敗就直接去重啟電腦就可以了?
9、去node節(jié)點(diǎn)重新加入到k8s集群
- 這里一點(diǎn)要把行前的空格去掉!
kubeadm join cluster-endpoint:6443 --token wxt6jz.xf9g3va8xpggfoc9 \
--discovery-token-ca-cert-hash sha256:2326cb4e54fe2fd92d112e01d1caf3e58735665e480f3d5aa364d47e52088b7c
使用docker ps查看正在運(yùn)行的容器:
發(fā)現(xiàn)node節(jié)點(diǎn)的calico正常運(yùn)行了:
10、在主節(jié)點(diǎn)檢查pod信息
在master節(jié)點(diǎn)執(zhí)行:
kubectl get pod -A -owide
- node節(jié)點(diǎn)上的pod已經(jīng)全部變?yōu)橥饩W(wǎng)IP了,master節(jié)點(diǎn)也能正常訪問node節(jié)點(diǎn)上的pod
11、驗(yàn)證
驗(yàn)證master節(jié)點(diǎn)是否能正常訪問node節(jié)點(diǎn)
直接在步驟10中,找一個(gè)node上的pod訪問即可,如(上面如標(biāo)框框的一個(gè)):文章來源:http://www.zghlxwxcb.cn/news/detail-769270.html
kubectl logs calico-node-rs4hj -n kube-system
文章來源地址http://www.zghlxwxcb.cn/news/detail-769270.html
到了這里,關(guān)于解決公網(wǎng)下,k8s calico master節(jié)點(diǎn)無法訪問node節(jié)點(diǎn)創(chuàng)建的pod的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!