我已经使用NodePort创建了一个部署。已创建Pod,并且Pod具有IP。吊舱中仅运行一个容器。我想从主机或节点之外的外部访问该容器/容器IP。现在,我可以从主机和节点(但不能从我的设备)ping Pod IP。容器/豆荚应该可以从我的设备ping通。我可以从Pod /容器ping我的设备。
需要做什么才能使Pod IP从外部可见/可访问?
答案 0 :(得分:1)
您需要指向节点上的服务端口(NodePort类型),而不是Pod IP。
kubectl get service <my-service>
检查您获得的端口。然后获取k8s集群中任何节点的IP
kubectl get nodes
达到
telnet <node_ip>:<service_port>
有关服务类型的更多信息:https://kubernetes.io/docs/concepts/services-networking/service/
答案 1 :(得分:0)
如果要访问您的Pod,则应执行以下操作:$ {node-ip}:$ {nodeport}。但是无法通过其clusterIP访问Pod,它仅用于集群内通信。通过将服务更改为LoadBalancer获得外部IP,但是该IP由云提供商接收。
答案 2 :(得分:0)
我同意@Max Lobur和@МартинПетков的结论,即使用https://github.com/braddle/coffee-interface/blob/master/EspressoMachine.interface.php类型的Kubernetes服务可以将基础Pod服务端口代理到对应节点上的池中的某个端口,因此您可能能够在节点IP地址和相关代理端口上到达群集外部的Kubernetes Pod。
或者,您可以通过在特定服务中应用NodePort来实现与目标Kubernetes Pod的通信,以将网络流量传输到相关的Node,但这是非常重要的解决方案,因为它需要在外部实现某些路由IP将网络流量转发到嵌套的Kubernetes节点。