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

时间:2017-05-14 10:53:40

标签: docker port kubernetes

在使用kubernetes时,我无法理解端口的工作方式。有三个端口有问题

  1. 我的应用正在Docker容器内监听的端口
  2. kubernetes配置文件中提到的端口为containerPort
  3. 部署作为服务公开时的LoadBalancer端口
  4. 以上三个端口之间有什么关系?在我目前的设置中,我在Dockerfile中提到了EXPOSE 8000,在kubernetes配置文件中提到了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
    

    有人可以向我解释一下上述三个端口如何协同工作以及它们对于成功曝光的价值应该是什么?我的应用程序?

1 个答案:

答案 0 :(得分:0)

问题出在我的Django服务器上,而不是Kubernetes或docker。我使用python manage.py runserver而不是python manage.py runserver 0.0.0.0:8080启动我的服务器,这导致它返回空响应,因为请求不是来自localhost。