Kubernetes

是否可以在 Kubernetes pod 中公開 2 個埠?

  • August 15, 2021

我有以下情況 -

圖片

位置模擬器將根據時間從 GPS 跟踪器獲取其經度和緯度數據。所以這個位置模擬器和activemq有連接,但是要接收原始數據,是否可以暴露這個服務的另一個埠來接收實時跟踪數據?

例如,如果您想deployment在兩個或更多埠上公開您,您至少可以通過兩種方式進行操作。

  1. 中的正確配置YAML。這種方法在Kubernetes 文件中有很好的描述。

對於某些服務,您需要公開多個埠。Kubernetes 允許您在服務對像上配置多個埠定義。當為一個服務使用多個埠時,您必須提供所有埠名稱,以便這些名稱明確。例如:

例子:

apiVersion: v1
kind: Service
metadata:
 name: my-service
spec:
 selector:
   app: MyApp
 ports:
   - name: http
     protocol: TCP
     port: 80
     targetPort: 9376
   - name: https
     protocol: TCP
     port: 443
     targetPort: 9377
   - name: <another-name>
     protocol: TCP
     port: XXX
     targetPort: XXX
  1. 使用kubectl expose.

$ kubectl exposed <resource(deployment/Replicaset/etc)> <deployment-name> --port=XXX,XYZ,ABC --target-port=XXX

$ kubectl expose deployment nginx --port=80,8080,6000 --target-port=8080 service/nginx exposed

$ kubectl describe svc nginx
Name:              nginx
Namespace:         default
Labels:            run=nginx
Annotations:       <none>
Selector:          run=nginx
Type:              ClusterIP
IP:                10.0.74.75
Port:              port-1  80/TCP
TargetPort:        8080/TCP
Endpoints:         10.48.0.13:8080
Port:              port-2  8080/TCP
TargetPort:        8080/TCP
Endpoints:         10.48.0.13:8080
Port:              port-3  6000/TCP
TargetPort:        8080/TCP
Endpoints:         10.48.0.13:8080
Session Affinity:  None
Events:            <none>

Kubernetes 文件中所述

targetPort: 是容器接受流量的埠, port: 是抽象Service埠,可以是其他 Pod 用來訪問 Service 的任何埠

引用自:https://serverfault.com/questions/1013402