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
请大牛帮看看,为什么在物理机上无法访问.
1 个回复
chinaxiang - 90后的程序员
赞同来自:
问题已经解决,是iptables的问题。
执行:
iptables -P FORWARD ACCEPT
即可。