我是Docker和Kubernetes的新手。现在,我正在开发Restful API,以后将它们部署到Kubernetes集群中的Docker容器中。
如何更改端点的路径?我听说Docker-Swarm和Kubernetes在端点上添加了一些命令。
答案 0 :(得分:1)
端点URL本身的“路径”部分(对于此SO问题,/questions/53008947/...
部分)不会更改。但是URL的其余部分可能。
Docker在TCP端口级别(docker run -p
选项,“ Docker Compose ports:
”部分)发布服务,并且不查看通过端口的流量。如果您的堆栈中有类似Apache或nginx代理的内容,这些内容可能会更改HTTP级别的路径映射,但是您可能会在环境中意识到这一点。
Kubernetes的工作原理类似,但是层数更多。容器在Pod中运行,并且可以从Pod中发布一些端口。没有直接使用;而是,服务(通过其标签)引用Pod并重新发布其端口(可能在不同的端口号上)。该服务具有一个可在群集中使用的DNS名称service-name.namespace.svc.cluster.local
。您还可以将服务配置为可以在服务中每个节点上的固定TCP端口上访问(NodePort
),或者,如果您的Kubernetes在公共云提供商上运行,则可以在此处创建负载均衡器({{ 1}})。同样,所有这些都严格在TCP级别上,并且不会影响HTTP路径。
还有另一个Kubernetes,一个Ingress控制器,它充当nginx代理(或其他具有类似功能的东西)的声明性包装。 确实在HTTP级别运行,并且可以更改路径。
另一个推论是,到达服务的URL在不同的环境中可能会不同:本地开发设置中的LoadBalancer
,Docker Compose中的http://localhost:12345/path
,Kubernetes中的http://other_service:8080/path
,http://other-service/path
在生产中。您需要一些方法来使其可配置(通常是环境变量)。