[英]Exposing multiple ports of container on kubernetes
我正在嘗試在我的本地 minkube 集群上運行我的自定義 marklogic 圖像。 Marklogic 為管理(8001)和查詢(8000)公開了多個不同的端口。 有沒有辦法在 kubernetes 上公開容器的多個端口?
這是我嘗試過的:
# try to run container with multiple ports exposed.
kubectl run ml3 --image=marklogic-initial-install:9.0-3.1 --port=8001 --port 8002
# create service to expose the container
kubectl expose deployment ml3 --type=LoadBalancer
# use qinikube to open the exposed ports
minikube service ml3
這可能嗎?
kubernetes 文檔中的這一部分表明這確實是可能的:
https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services
但它只討論了如何配置服務以公開多個端口,並沒有說如何為容器實現這一點——這應該是一個先決條件。
謝謝!
從我在您的命令中看到的內容來看,您需要在kubectl expose
指定該服務將使用的兩個端口中的哪一個。 如果有兩個端口執行不同的操作,那么有兩個服務是有意義的(否則您將不知道每個請求中將使用兩個端口中的哪一個)。 所以,我的建議是執行兩個 kubectl 暴露命令(在--port
部分,你可以放任何你想要的):
kubectl expose deployment ml3 --type=LoadBalancer --name=management --port=80 --target-port=8000
kubectl expose deployment ml3 --type=LoadBalancer --name=query --port=80 --target-port=8001
因此,您將擁有一項用於查詢的服務和另一項用於管理的服務。
另一種選擇是使用具有兩個不同端口的一個服務,但我不確定使用 kubectl 暴露是否可行。 在這種情況下使用 yaml 文件是有意義的:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp <-- use a proper selector for your pods
ports:
- name: management
protocol: TCP
port: 80
targetPort: 8000
- name: query
protocol: TCP
port: 81
targetPort: 8001
使用kubectl expose
,您可以通過用逗號分隔來指定多個端口:
--port=8001,8002
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.