簡體   English   中英

如何在 Kubernetes 中使用負載均衡器服務公開多個端口

[英]How to expose multiple port using a load balancer services in Kubernetes

我使用谷歌雲平台(容器引擎)創建了一個集群,並使用以下 YAML 文件部署了一個 pod:

apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: deployment-name
spec:
  replicas: 1
  template:
    metadata:
      name: pod-name
      labels: 
        app: app-label
    spec:
      containers: 
      - name: container-name
      image: gcr.io/project-id/image-name
      resources:
        requests:
          cpu: 1
      ports:
      - name: port80
        containerPort: 80
      - name: port443
        containerPort: 443
      - name: port6001
        containerPort: 6001

然后我想創建一個服務,使 pod 能夠偵聽所有這些端口。 我知道以下 YAML 文件可用於創建在一個端口上偵聽的服務:

apiVersion: v1
kind: Service
metadata: 
  name: service-name
spec:    
  ports:
  - port: 80
    targetPort: 80
  selector: 
    app: app-label
  type: LoadBalancer

但是,當我希望 pod 像這樣監聽多個端口時,它不起作用:

apiVersion: v1
kind: Service
metadata: 
  name: service-name
spec:    
  ports:
  - port: 80
    targetPort: 80
  - port: 443
    targetPort: 443
  - port: 6001
    targetPort: 6001
  selector: 
    app: app-label
  type: LoadBalancer

如何讓我的 pod 監聽多個端口?

你有兩個選擇:

  1. 您可以擁有多項服務,每個端口一項。 正如您所指出的,每項服務最終都會有一個不同的 IP 地址
  2. 您可以擁有具有多個端口的單一服務。 在這種特殊情況下,您必須為所有端口命名。

在您的情況下,服務變為:

apiVersion: v1
kind: Service
metadata:
  name: service-name
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443
  - name: something
    port: 6001
    targetPort: 6001
  selector:
    app: app-label
  type: LoadBalancer

這是必要的,以便端點可以消除歧義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM