gpt4 book ai didi

docker - 在kubernetes上暴露容器的多个端口

转载 作者:行者123 更新时间:2023-12-01 08:10:17 44 4
gpt4 key购买 nike

我正在尝试在本地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

关于docker - 在kubernetes上暴露容器的多个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47718079/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com