我是Docker和Kubernetes的新手。现在我正在开发Restful API,稍后将其部署到Kubernetes集群中的Docker容器。
端点的路径将如何更改?我听说Docker-Swarm和Kubernetes在端点上添加了一些线条。
发布于 2018-10-26 21:09:54
端点URL本身的“路径”部分(对于这个问题,就是/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运行在公共云提供商上,则在那里创建一个负载均衡器(LoadBalancer)。同样,所有这些都是严格在TCP级别进行的,不会影响HTTP路径。
还有另一个Kubernetes组件,Ingress控制器,它充当nginx代理(或具有类似功能的其他组件)的声明性包装器。这确实是在HTTP级别操作的,并且可能会更改路径。
与此相关的另一个推论是,访问服务的URL在不同的环境中可能不同:本地开发设置中的http://localhost:12345/path、Docker Compose中的http://other_service:8080/path、Kubernetes中的http://other-service/path、生产环境中的https://api.example.com/other/path。您需要一些方法来使其可配置(通常是一个环境变量)。
https://stackoverflow.com/questions/53008947
复制相似问题