鉴于在docker-compose.yml
文件中定义的以下端口,如何在kubernetes yml文件中进行等效操作?
docker-compose.yml
seq.logging:
image: datalust/seq
networks:
- backend
container_name: seq.logging
environment:
- ACCEPT_EULA=Y
ports:
- "5300:80" # UI
- "5301:5341" # Data ingest
kubernetes.yml
---
apiVersion: v1
kind: Pod
metadata:
name: backend-infrastructure
labels:
system: backend
app: infrastructure
spec:
containers:
- name: seq-logging
image: datalust/seq
# ports: ?????????????????????????????????????
# - containerPort: "5300:80" # UI
# - containerPort: "5301:5341" # Data ingest
env:
- name: ACCEPT_EULA
value: "Y"
答案 0 :(得分:1)
您不会使用Pod / deployment yaml公开端口。 服务是做到这一点的方法。您可以在此处在pod /部署上使用多种服务,但这将导致多个IP地址。另一种方法是命名每个端口,然后创建一个多端口服务定义。
在您的情况下,它看起来应该像这样(请注意,这只是一个快速编写的示例)。 Also
使用多个端口时,必须提供所有端口名称,因此 端点可以消除歧义。
apiVersion: v1
kind: Pod
metadata:
name: backend-infrastructure
labels:
system: backend
app: infrastructure
spec:
containers:
- name: seq-logging
image: datalust/seq
ports:
- containerPort: 80 # UI
name: ui
- containerPort: 5341 # Data ingest
name: data-ingest
env:
- name: ACCEPT_EULA
value: "Y"
---
apiVersion: v1
kind: Service
metadata:
name: seq-logging-service
spec:
type: #service type
ports:
- name: ui
port: 5300
targetPort: 80
- name: data-ingest
port: 5301
targetPort: 5341
更多资源: -有关connecting applications with services的文档。 -上面的示例yaml具有带有多个端口容器和相应服务的部署。
更新: containerPort
要从容器公开的端口列表。在这里暴露一个端口给 有关网络连接的系统附加信息 容器使用,但主要是提供信息。没有指定端口 此处不阻止该端口暴露。任何端口 侦听容器内默认的“ 0.0.0.0”地址将是 可从网络访问。无法更新。