集群信息:
Kubernetes版本:1.25
正在使用的云:
安装方式:
主机操作系统:Linux
CNI和版本:
CRI和版本:
大家好,我是使用Docker和Kubernetes的容器化应用程序的新手。基本上,我必须将已经编写的应用程序从Docker迁移到Kubernetes。我转换了docker-compose. yaml文件:
$ kompose convert -f docker-compose.yaml
我得到了我的deployments、persistenVolume和service yaml文件。我还必须使用localhost注册表,我成功地创建了一次,正如官方docker文档在https://docs.docker.com/registry/deploying/上所建议的那样:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
我标记并正确地将我的图像推送到localhost:5000,我的pod运行正常。但是我不能让它们正确通信,我猜这是从Docker环境到Kubernetes环境的端口的问题,我认为这主要是Kubernetes使用的clusterIP服务。具体来说,我有一个pod,它运行一个容器,容器上有一个Postgres数据库,另一个运行后端逻辑并需要访问数据库。下面是在db-service.yaml中指定的端口:
spec:
ports:
- name: "8543"
port: 8543
targetPort: 5432
selector:
io.kompose.service: db
db-deployment. yaml中的容器端口:
ports:
- containerPort: 5432
api-service. yaml中的端口(相对于后端):
ports:
- name: "8000"
port: 8000
targetPort: 8000
selector:
io.kompose.service: api
以及api-deployment. yaml中的端口(相对于后端):端口:
- containerPort: 8000
我尝试改变各种端口组合,也使用5000:在它之前,因为也许他们需要本地主机的规范,顺便说一句,它从来没有改变任何东西。我期望端口的配置将以与Docker中相同的方式工作,所以我期望一切都能正常工作!
1条答案
按热度按时间nnt7mjpx1#
有几件事你需要在你的终端验证:
Service
使用的选择器标签实际上应该指向相应的Pod标签。1.后端
Pod
正在使用的DB URI架构的值。它应该遵循<service-name>
(相同命名空间)或<service-name>.<sevice-namespace>.svc.cluster.local
(不同命名空间)格式,并具有正确的Service
端口。查看此链接了解详细信息。