kubectl 发布一个service, 外网无法访问


在虚拟机上,搭建了一个k8s单机项目,创建了一个nginx-service
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
ports:
- port: 80
nodePort: 30001
selector:
name: nginx-pod


服务已经启动:
kubectl describe svc nginx-service
Name:           nginx-service
Namespace:      default
Labels:         <none>
Annotations:        <none>
Selector:       name=nginx-pod
Type:           NodePort
IP:         10.254.96.42
Port:           <unset>  80/TCP
NodePort:       <unset>  30001/TCP
Endpoints:      192.168.4.130:80
Session Affinity:   None
Events:         <none>


虚拟机上执行如下三个都是没问题的。

虚拟机IP 10.211.55.7

curl 10.211.55.7:30001
curl 10.254.96.42
curl 192.168.4.130


但是在我的电脑(安装虚拟机的机器)上访问:10.211.55.7:30001 无法链接。
访问kubernetes api server是没问题的:10.211.55.7:8080

物理机网络情况:
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 60:f8:1d:d1:3c:2e
inet6 fe80::14cb:c20d:d275:e7ff%en0 prefixlen 64 secured scopeid 0x4
inet 192.168.22.151 netmask 0xffffff00 broadcast 192.168.22.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
vnic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:1c:42:00:00:08
inet 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255
media: autoselect
status: active
vnic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:1c:42:00:00:09
inet 10.37.129.2 netmask 0xffffff00 broadcast 10.37.129.255
media: autoselect
status: active


虚拟机的网络环境:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1c:42:79:26:7a brd ff:ff:ff:ff:ff:ff
inet 10.211.55.7/24 brd 10.211.55.255 scope global dynamic eth0
   valid_lft 1296sec preferred_lft 1296sec
inet6 fdb2:2c26:f4e4:0:5f7b:999b:5e7f:5284/64 scope global noprefixroute dynamic
   valid_lft 2591689sec preferred_lft 604489sec
inet6 fe80::3503:678d:3637:111a/64 scope link
   valid_lft forever preferred_lft forever
4: br-8373b59b5c3f: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:27:01:b7:3b brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 scope global br-8373b59b5c3f
   valid_lft forever preferred_lft forever
inet6 fe80::42:27ff:fe01:b73b/64 scope link
   valid_lft forever preferred_lft forever
119: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
link/none
inet 192.168.4.128/24 scope global flannel0
   valid_lft forever preferred_lft forever
inet6 fe80::6742:a52f:f02:f31e/64 scope link flags 800
   valid_lft forever preferred_lft forever
120: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1472 qdisc noqueue state UP
link/ether 02:42:c4:ce:f0:fe brd ff:ff:ff:ff:ff:ff
inet 192.168.4.129/25 scope global docker0
   valid_lft forever preferred_lft forever
inet6 fe80::42:c4ff:fece:f0fe/64 scope link
   valid_lft forever preferred_lft forever


安装kubernetes配置的cluster-ip-range: 10.254.0.0/16
配置的etcd flanneld 网段为:192.168.4.0/24

请大牛帮看看,为什么在物理机上无法访问.
已邀请:

chinaxiang - 90后的程序员

赞同来自:


问题已经解决,是iptables的问题。

执行:iptables -P FORWARD ACCEPT 即可。

要回复问题请先登录注册