了解kubernetes部署,服务和Docker镜像端口
我无法理解使用kubernetes时端口如何工作。 有三个端口有问题
- 我的应用程序在Docker容器内侦听的端口
- 在kubernetesconfiguration文件中提到的端口是
containerPort
- 部署作为服务公开时的LoadBalancer端口
以上三个港口之间的关系是什么? 在我目前的设置中,我在Dockerfile中提到了EXPOSE 8000
,在kubernetesconfiguration文件中提到了containerPort: 8000
。 我的应用程序正在监听docker容器内的端口8000
。 当我使用kubectl expose deployment myapp --type="LoadBalancer"
,会导致以下服务 –
$ kubectl get service NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE myapp 10.59.248.232 <some-ip> 8000:32417/TCP 16s
但是我的curl
失败,如下所示 –
$ curl http://<some-ip>:8000/status/ -i curl: (52) Empty reply from server
有人可以解释一下上述三个端口是如何协同工作的,以及应用程序成功“暴露”的价值是什么?
问题是我的Django服务器,而不是Kubernetes或docker。 我正在启动我的服务器与python manage.py runserver
而不是python manage.py runserver 0.0.0.0:8080
这是导致它返回空响应请求不是来自本地主机。