kubernetes - Kubernetes中容器端口和目标端口的区别?
问题描述
与Kubernetes中的容器有什么container port
不同?targetports
它们是否可以互换使用,如果可以,为什么?
我遇到了以下代码片段,其中containerPort
用于表示port
Kubernetes 中的 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
在上面的代码片段中,他们为containerPort
参数提供了 5432(在最后一行)。那么,这与 有何containerPort
不同targetport
?
据我所知,这个词port
一般是指port
on the service
(Kubernetes)。如果我不正确,请纠正我。
解决方案
简而言之: targetPort
并且containerPort
基本上是指相同的端口(因此,如果使用两者,它们应该具有相同的值),但它们用于两种不同的上下文并且具有完全不同的目的。
它们不能互换使用,因为它们都是两个不同 kubernetes 资源/对象规范的一部分:Service
和Pod
分别。虽然 的目的containerPort
可以被视为纯粹targetPort
的信息,但它需要Service
暴露一组Pods
.
重要的是要了解,通过在/规范中声明containerPort
特定值,您不能公开此特定端口,例如,如果您在字段中声明您的 nginx公开端口而不是默认端口,您仍然需要在容器中配置您的 nginx 服务器监听这个端口。Pod
Deployment
Pod
containerPort
Pod
8080
80
containerPort
在规范中声明Pod
是可选的。即使没有它,您Service
也将知道根据它在其targetPort
.
最好记住它不需要targetPort
在Service
定义中声明。如果你省略它,它默认为你声明的值port
(这是它本身的端口Service
)。
推荐阅读
- javascript - Vue 不更新全局状态
- homebrew - ==> 修复 /usr/local/opt/macos-updater/bin/macos-updater 权限从 755 到 444
- nlp - 使用 LDA 进行主题建模。查找剪影分数
- reset - 如何在 Apereo CAS 6.1.x 中重置 Principal attributeMap?
- go - redigo 错误日志:写入:对等方重置连接
- python - 我们可以在每个第 n 个位置沿行合并两个数据帧吗?
- api - 多个后端 WSO2 API 管理器中的复制 API
- python-3.x - 列表列表中的元素
- parameters - 计算平均值后保存的文件没有任何变化
- apache-spark - repartition(1) - 使加载非常慢