kubernetes LoadBalancer服务目标端口在GCP中设置为随机,而不是配置



这是直接从文档中得到的最简单的配置,但是当我创建服务时,kubectl将目标端口随机列出。在YAML:

中将目标端口设置为1337
apiVersion: v1
kind: Service
metadata:
name: sails-svc
spec:
selector:
app: sails
ports:
- port: 1337
targetPort: 1337
type: LoadBalancer

这是k8s为服务设置的:

kubectl get services
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
kubernetes     ClusterIP      <X.X.X.X>      <none>          443/TCP          23h
sails          LoadBalancer   <X.X.X.X>      <X.X.X.X>       1337:30203/TCP   3m6s
svc-postgres   ClusterIP      <X.X.X.X>      <none>          5432/TCP         3m7s

当我指定1337时,为什么k8s将目标端口设置为30203?如果我尝试其他端口号,它会做同样的事情,80得到31887。我已经阅读了文档,但是禁用这些属性在GCP中没有任何作用。我没有正确配置什么?

Kubectl get services输出包括Port:NodePort:Protocol信息。默认情况下,为了方便起见,Kubernetes控制平面将从默认范围分配一个端口:30000-32767(参考本文档中的示例)

要获取TargetPort信息,请使用

kubectl get service <your service name> --output yaml

此命令显示loadBalancer下的所有端口详细信息和稳定的外部IP地址:ingress:

有关创建服务类型loadbalancer的更多详细信息,请参阅本文档

也许这是绊倒我更多,它应该有由于一些重定向,我没有意识到正在发生,但解决了一些事情与我的内部容器,这工作。

收益率:

NAME           TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)          AGE
kubernetes     ClusterIP      10.3.240.1    <none>          443/TCP          28h
sails          LoadBalancer   10.3.253.83   <X.X.X.X>       1337:30766/TCP   9m59s
svc-postgres   ClusterIP      10.3.248.7    <none>          5432/TCP         12m

我可以curl against EXTERNAL-IP:1337。内部目标端口让我出了问题。我认为这意味着我的pod需要开放到该端口,并且pod应用程序应该绑定到该端口(即30766),但事实并非如此。这个端口是一些到pod的内部端口映射,我还没有完全理解,但是pod仍然在端口1337上获得外部流量到pod的1337端口。我想更好地了解那里发生了什么,因为我更多地了解了文档的k8s Networking部分,或者如果有人能给我一些启发。

最新更新