了解kubernetes部署,服务和Docker镜像端口

我无法理解使用kubernetes时端口如何工作。 有三个端口有问题

  1. 我的应用程序在Docker容器内侦听的端口
  2. 在kubernetesconfiguration文件中提到的端口是containerPort
  3. 部署作为服务公开时的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这是导致它返回空响应请求不是来自本地主机。