kubernetes踩坑:nodePort拒绝访问的问题

(1)找到pod所在节点,从pod所在k8s节点上通过{nodeIp}:{nodePort}访问,如果访问不了,可能是podservice没有成功部署;

(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节点无须启动kubeletkube-proxy服务,如果想从master节点访问service,可以在master节点上启动kube-proxy服务,如果想让pod调度到master节点,可以启动kubelet服务。

你可能感兴趣的:(kubernetes)