这是直接从文档中得到的最简单的配置,但是当我创建服务时,kubectl将目标端口随机列出。在YAML:
中将目标端口设置为1337apiVersion: 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部分,或者如果有人能给我一些启发。