(1)找到pod
所在节点,从pod
所在k8s
节点上通过{nodeIp}:{nodePort}
访问,如果访问不了,可能是pod
或service
没有成功部署;
(2)从其它node
节点通过{nodeIp}:{nodePort}
访问,如果不能访问,执行
kubectl describe pod {podName} -n={namespace}
查看pod
描述信息,找到pod ip
,直接对着pod
访问{podIp}:{containerPort}
,如果无法访问,尝试ping
一下{podIp}
,如果ping
不通,说明k8s
节点之间docker
容器网络不通,需要安装网络组件如flannel
之类;
(3)从master
节点通过{nodeIp}:{nodePort}
访问,如果node
节点可以访问{nodePort}
而master
节点无法访问,执行
netstat -nlp | grep {nodePort}
查看{nodePort}
端口是否有服务在监听,正常会看到类似:
tcp6 0 0 :::30804 :::* LISTEN 3089/kube-proxy
说明nodePort 30804
端口正在被kube-proxy
服务在3089
进程监听,如果没有则可能是没有启动kube-proxy
服务,在k8s
里面service
相关的功能是依赖kube-proxy
实现的。
master
节点无须启动kubelet
和kube-proxy
服务,如果想从master
节点访问service
,可以在master
节点上启动kube-proxy
服务,如果想让pod
调度到master
节点,可以启动kubelet
服务。