如何使用Kubernetes端口名?
在kubernetes部署中,我指定如下端口:如何使用Kubernetes端口名?,kubernetes,kubernetes-service,Kubernetes,Kubernetes Service,在kubernetes部署中,我指定如下端口: containers: - name: nginx image: nginx:latest ports: - name: nginx-port containerPort: 80 protocol: TCP 现在在服务中我可以像这样引用该端口(只允许我在服务中指定外部端口): 现在的问题是,我是否可以使用以下语法nginx service.default.svc.cluster.local:ngin
containers:
- name: nginx
image: nginx:latest
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
现在在服务中我可以像这样引用该端口(只允许我在服务中指定外部端口):
现在的问题是,我是否可以使用以下语法
nginx service.default.svc.cluster.local:nginx port
?您知道我可以使用这个特殊名称引用服务,但我发现自己硬编码端口号,如songinx service.default.svc.cluster.local:80
kube dns
是一种与所有常规dns服务器使用相同协议的dns服务。从这个意义上讲,DNS不是用来解析“端口名”,而是用来解析域名(映射到IP地址)
一些人所做的是使用反向代理,将流量从一个端口代理传递到另一个端口(假设我们讨论的是HTTP/HTTPS流量),或者使用iptables规则。但是,这些假设首先将流量转发到特定端口(例如,80)
正如您在评论中所写,使用环境变量将是适合您的情况的选项 否。不能使用端口名而不是端口号。ServicePort中的名称字段有不同的用途 ServiceSpec中的所有端口必须具有唯一的名称。此名称映射到EndpointPort对象中的“名称”字段
对于每个服务,将生成一个端点对象。该端点的每个端口都对应一个服务端口。ServicePort和EndpointPort中的Name字段都用于此匹配。通常,您通过其编号引用目标端口。但您可以为每个pod的端口指定一个特定的名称,并在服务规范中引用该名称 这将使您的服务更清晰。这里有一个小例子:
apiVersion: v1
kind: Pod
metadata:
name: named-port-pod
labels:
app: named-port-pod
spec:
containers:
- name: echoserver
image: gcr.io/google_containers/echoserver:1.4
ports:
- name: pod-custom-port
containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: named-port-svc
spec:
ports:
- port: 80
targetPort: pod-custom-port
selector:
app: named-port-pod
Kubernetes DNS服务使用以下格式为服务的所有命名端口提供
_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster-domain.example
在您的情况下,您应该能够通过查询下面的域来访问它
_nginx-port._tcp.nginx-service.default.svc.cluster.local
范例
nslookup -type=SRV _nginx-port._tcp.nginx-service.default.svc.cluster.local
结果是:
_nginx-port._tcp.nginx-service.default.svc.cluster.local service = 0 100 80 nginx-service.default.svc.cluster.local.
在上面的输出中,
nginx service.default.svc.cluster.local
是目标域,80
是您应该连接的目标端口,也就是说,nginx服务.default.svc.cluster.local:80
好,所以在我发布这篇文章之后,我意识到我可以利用注入容器的环境变量,即$(nginx\u服务\u端口)
。仍然想知道端口是否也存在类似dns名称的东西,例如nginx service.default.svc.cluster.local
。是否在任何地方记录了它?你能提供链接吗?谢谢:)还有。他们是如何融入这一宏大的计划的——我不知道。
_nginx-port._tcp.nginx-service.default.svc.cluster.local service = 0 100 80 nginx-service.default.svc.cluster.local.