如何在kubernetes yaml文件中设置这些docker-compose端口?

时间:2019-06-02 09:15:14

标签: docker kubernetes docker-compose

鉴于在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"

1 个答案:

答案 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”地址将是   可从网络访问。无法更新。