admin管理员组文章数量:1571162
基本环境
软件: virtualBox, 网卡配置(一张NAT[上网], 一张桥接[连接xshell])
三个node
在master上执行 deployment.yaml
[root@k8s-master01 k8s_files]$ cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pc-deployment
namespace: dev
spec:
replicas: 3
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
[root@k8s-master01 k8s_files]$ kubectl get po -n dev -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pc-deployment-6696798b78-bbhjp 1/1 Running 0 13m 10.244.0.33 k8s-master01 <none> <none>
pc-deployment-6696798b78-mjdrh 1/1 Running 0 13m 10.244.1.46 node1 <none> <none>
pc-deployment-6696798b78-x9h8t 1/1 Running 0 13m 10.244.2.35 node2 <none> <none>
但是只能访问本身节点的nginx,无法访问其它节点的pod
原因
在组网的过程中,我采用了双网卡方案,网卡1使用NAT地址转换用来访问互联网,网卡2使用桥接使得xshell可以连接虚拟机。
flannel默认使用了网卡1的 ip 地址,而网卡1的NAT地址转换是无法访问其他虚拟机的,从而导致的问题的产生。
解决
修改flannel的配置文件
sudo kubectl edit daemonset kube-flannel-ds-amd64 -n kube-system
在打开的配置文件中找到spec.template.spec.containers[0].args字段
containers:
- args:
- --ip-masq
- --kube-subnet-mgr
- --iface=enp0s8 # 添加网卡配置
command:
- /opt/bin/flanneld
添加 - --iface=enp0s8
其中 enp0s8是通过ifconfig
命令查到的
[root@k8s-master01 k8s_files]$ sudo kubectl edit daemonset kube-flannel-ds-amd64 -n kube-system
daemonset.apps/kube-flannel-ds-amd64 edited
使用kubectl delete pod -n kube-system <pod名1> <pod名2> ...
把所有的flannel删除即可。
k8s 会自动按照你修改好的yaml配置重建flannel。
[root@k8s-master01 k8s_files]$ kubectl get po -n kube-system
[root@k8s-master01 k8s_files]$ kubectl delete po -n kube-system kube-flannel-ds-amd64-9ppcc kube-flannel-xx kube-flannel-yy
至此,问题解决。可访问其它节点的pod了。
简书-详细-k8s无法通过svc访问其他节点pod
版权声明:本文标题:k8s无法通过svc访问其他节点pod 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727688602a1125607.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论