我在使用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
但我的 curl
失败如下图所示 -
$ curl http://<some-ip>:8000/status/ -i
curl: (52) Empty reply from server
有人可以解释一下上面三个端口如何协同工作以及他们的应用程序成功“曝光”的 Value 应该是什么?
1 回答
问题出在我的Django服务器上,而不是Kubernetes或docker . 我用
python manage.py runserver
而不是python manage.py runserver 0.0.0.0:8080
启动我的服务器,这导致它返回空响应,因为请求不是来自localhost .