Pur*_*nth 6 port containers kubernetes kubernetes-pod
如何container port从不同targetports在Kubernetes容器?它们是否可以互换使用,如果可以,为什么?
我遇到了下面的代码片段,其中containerPort用于表示portKubernetes 中的 pod。
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
labels:
app: demo-voting-app
spec:
replicas: 1
selector:
matchLabels:
name: postgres-pod
app: demo-voting-app
template:
metadata:
name: postgres-pod
labels:
name: postgres-pod
app: demo-voting-app
spec:
containers:
- name: postgres
image: postgres:9.4
ports:
- containerPort: 5432
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,他们为containerPort参数提供了 5432 (在最后一行)。那么,这containerPort与targetport?
据我所知,该术语port泛指port上service(Kubernetes)。如果我不正确,请纠正我。
Arg*_*dhu 11
Pod 规范中的 ContainerPort
要从容器公开的端口列表。此处公开端口可为系统提供有关容器使用的网络连接的附加信息,但主要是提供信息。此处不指定端口并不能防止该端口被暴露
服务规范中的 targetPort
服务目标 Pod 上要访问的端口号或名称。数字必须在 1 到 65535 范围内。名称必须是 IANA_SVC_NAME。如果这是一个字符串,它将在目标 Pod 的容器端口中作为命名端口进行查找。如果未指定,则使用“端口”字段的值(身份映射)。
因此,targetPort服务中需要匹配containerPortPod 中的规范,因为服务就是这样知道哪个容器端口是将流量转发到的目的地的。
简而言之: targetPort和containerPort基本上指的是同一个端口(所以如果两者都被使用,它们应该具有相同的值)但它们用于两种不同的上下文并且具有完全不同的目的。
它们不能互换使用,因为它们都是两个不同的 kubernetes 资源/对象规范的一部分:Service和Pod。虽然 的目的containerPort可以被视为纯粹的信息,但targetPort它需要Service暴露一组Pods.
重要的是要了解,通过containerPort在Pod/Deployment规范中声明特定值,您不能Pod公开此特定端口,例如,如果您在containerPort字段中声明nginxPod公开端口8080而不是默认端口80,您仍然需要在容器中配置 nginx 服务器监听这个端口。
containerPort在Pod规范中声明是可选的。即使没有它,您Service也会根据它在其targetPort.
最好记住它不需要targetPort在Service定义中声明。如果省略它,则默认为您为其声明的值port(即Service自身的端口)。
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |