我有准备好docker-compose安装程序的项目。现在我想转向kubernetes。我使用Kompose工具从docker-compose转换为kubernetes。
例如,这是我的示例docker-compose.yml
文件
version: '3'
volumes:
database_hades_volume:
external: true
services:
db:
image: postgres:latest
container_name: hades-db
ports:
- "5432:5432"
environment:
POSTGRES_DB: hades_dev
POSTGRES_PASSWORD: 1234
volumes:
- database_hades_volume:/var/lib/postgresql/data/
tty: true
stdin_open: true
redis:
container_name: hades-redis
image: redis:latest
ports:
- "6379:6379"
app:
container_name: hades-app
build:
context: .
dockerfile: Dockerfile
ports:
- "4001:4001"
volumes:
- ".:/webapp"
env_file:
- ./.env.docker_compose-dev
depends_on:
- db
- redis
我已经使用命令
docker-compose up
成功运行了。现在,我使用kompose
通过以下命令将其转换为kubernetes:kompose convert
然后,我使用以下命令运行:
kompose up
这是命令行结果信息:
INFO We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application. If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead.
INFO Deploying application in "default" namespace
INFO Successfully created Service: app
INFO Successfully created Service: db
INFO Successfully created Service: redis
INFO Successfully created Deployment: app
INFO Successfully created PersistentVolumeClaim: app-claim0 of size 100Mi. If your cluster has dynamic storage provisioning, you don't have to do anything. Otherwise you have to create PersistentVolume to make PVC work
INFO Successfully created Deployment: db
INFO Successfully created PersistentVolumeClaim: database-hades-volume of size 100Mi. If your cluster has dynamic storage provisioning, you don't have to do anything. Otherwise you have to create PersistentVolume to make PVC work
INFO Successfully created Deployment: redis
Your application has been deployed to Kubernetes. You can run 'kubectl get deployment,svc,pods,pvc' for details.
但是当我尝试通过
localhost:4001
或10.0.0.180:4001
进行测试时,我看到它一直在等待。我不知道我是否设置错误或错过了一些步骤。请帮我。
谢谢
最佳答案
您的docker-compose文件包含build
密钥,这意味着您存在app
服务的源代码/ Dockerfile,
截至目前
NAME READY STATUS RESTARTS AGE
po/app-2119952459-b4jtb 0/1 ErrImagePull 0 24s
状态为
ErrImagePull
,因为群集无法找到任何图像,因此,连同build
密钥一起提供image
密钥,对于前。
app:
container_name: hades-app
build:
context: .
dockerfile: Dockerfile
image: <username>/<imagename>:<tag>
因为现在kompose具有本地构建和推送支持功能,
因此,kompose将构建您的镜像,推送到dockerhub,然后您的集群可以在部署时从那里拉镜像。
命令可以像
kompose up --build=local
我希望这是有道理的