了解kubernetes部署、服务和docker映像端口

了解kubernetes部署、服务和docker映像端口,docker,port,kubernetes,Docker,Port,Kubernetes,在使用kubernetes时,我很难理解端口是如何工作的。有三个港口有问题 我的应用程序正在docker容器中侦听的端口 kubernetes配置文件中提到的端口为containerPort 部署作为服务公开时的LoadBalancer端口 上述三个端口之间的关系是什么?在我当前的设置中,我在Dockerfile中提到了EXPOSE 8000,在kubernetes配置文件中提到了containerPort:8000。我的应用程序正在docker容器内的端口8000上侦听。当我使用kubectl

在使用kubernetes时,我很难理解端口是如何工作的。有三个港口有问题

  • 我的应用程序正在docker容器中侦听的端口
  • kubernetes配置文件中提到的端口为
    containerPort
  • 部署作为服务公开时的LoadBalancer端口
  • 上述三个端口之间的关系是什么?在我当前的设置中,我在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
    

    有人能给我解释一下上述三个端口是如何协同工作的,它们对成功“曝光”我的应用程序有什么价值吗?

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

    仅供参考。我经常看这些幻灯片。本幻灯片有助于理解docker网络和kubernetes网络的核心。
    $ curl http://<some-ip>:8000/status/ -i
    curl: (52) Empty reply from server