【发布时间】:2021-10-20 13:25:21
【问题描述】:
我是 Kubernetes 和 Helm Charts 的新手,希望在这里找到我的问题的答案。
当我运行 kubectl get all 并在服务下查看时,我得到如下信息:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/leader LoadBalancer 10.3.245.137 104.198.205.71 80:30125/TCP, 8888:30927/TCP 54s
我的服务在我的 Helm Chart 中配置为:
ports:
name: api
port: 80
targetPort: 8888
name: api2
port: 8888
targetPort: 8888
当我运行kubectl describe svc leader 时,我得到:
Type: LoadBalancer
Port: api 80/TCP
TargetPort: 8888/TCP
NodePort: api 30125/TCP
EndPoints: <some IP>:8888
Port: api 8888/TCP
TargetPort: 8888/TCP
NodePort: api 30927/TCP
EndPoints: <some IP>:8888
我一直认为NodePort 是在外部公开我的集群的端口,而端口将是在内部服务上公开的端口,它路由到 Pod 上的TargetPorts。我从here 那里得到了这个理解。
但是,我似乎可以打开 104.198.205.71:80 或 104.198.205.71:8888,但我不能打开 104.198.205.71:30125 或 104.198.205.71:30927。我的期望是我应该能够通过NodePorts 访问 104.198.205.71,而不是通过端口。我的理解有误吗?
【问题讨论】:
-
通过nodePort访问,需要使用node外网IP。
kubectl get node -owide应该给你节点的IP。 -
我明白了。我可以选择通过端口访问是否有意义?我认为端口仅在集群内部公开,如果我尝试在浏览器中这样做,我会假设像
:80 这样的东西会失败。 -
在您认为端口
80工作的**节点**(不是容器)中。检查sudo netstat -tulnp |grep-w 80
标签: kubernetes kubernetes-helm kubernetes-service