**Kubernetes版本:**v1.10.3
**Docker版本:**17.03.2-ce
**操作系统及内核:**Centos 7
复制步骤:https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/
结果:
[root@rd07 rd]# kubectl describe services example-service
Name:wow gold
命名空间:default
Labels:Linux,Linux
注解:
选择器:run=load-balancer-example
类型:节点端口
网址:http:10.108.214.162
端口:9090/TCP
目标端口:9090/TCP
节点端口:31105/TCP
终点:192.168.1.23:9090,192.168.1.24:9090
会话关联性:无
外部交通政策:集群
活动:
预期:
期望能够curl kubernetes服务中定义的集群ip
我不太确定哪个是所谓的“public-node-ip”,所以我尝试了每个相关的IP地址,只有当使用主IP作为“public-node-ip”时,它显示“No route to host”。
我使用“netstat”来检查端点是否被监听。
我试着用“https://github.com/rancher/rancher/issues/6139“来刷新我的iptables,但它根本不起作用。
我尝试了“https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/“,“nslookup hostnames.default”不起作用。
服务似乎工作得很好,但服务仍然无法访问。
我用的是“印花布”,“法兰绒”也试过了。
我尝试了很多应用服务的教程,它们都无法访问。
我是Kubernetes的新手,请大家帮助我。
3条答案
按热度按时间xggvc2p61#
如果你在任何公共云上,你不应该在
ip a
命令中获取公共IP地址。但即使端口将暴露给0.0.0.0:31105
以下是您可以验证配置的示例文件:
只需将您的
<private-ip>
替换为externalIPs:
,并使用您的节点端口 curl 您的公共IP。如果您正在使用任何云部署应用程序,还需要验证来自云安全组/防火墙的配置以打开端口。
希望这能有所帮助。
谢谢你!
fcipmucu2#
我的k8s集群是1个主节点和1个节点。
服务Pod正在节点上运行。
所以我使用了http://nodeip:31105,它显示“Hello Kubernetes!“.
但是http://masterip:31105仍然不工作,它应该是正确的吗?
我检查了端点侦听,31105在主服务器上侦听。
qv7cva1a3#
使用此命令:
如果您的服务“TYPE”是“NodePort”,“EXTERNAL-IP”列是“none”,那么您可以从URL访问或 curl 您的服务:
http://<localmachine_ip>:<port_no>
端口号也可在
PORT(S)
列中的命令kubectl get service
的结果中获得。例如,如果PORT(S)
的值为1000:31918/TCP
,则端口号为31918
。如果服务类型为
ClusterIP
,则首先使用命令kubectl delete service <servie_name>
删除服务,然后使用以下命令:此命令将启动
TYPE
=NodePort
的服务注意:您必须公开部署。我想你知道K8的部署。