将docker-compose.yml文件转换为kubernetes [英] convert docker-compose.yml file to kubernetes

查看:550
本文介绍了将docker-compose.yml文件转换为kubernetes的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用follwing命令使用kompose将docker-compose文件转换为kubernetes:

I am converting a docker-compose file to kubernetes using kompose running the follwing command:

$ kompose convert -f docker-compose.yml -o kubernetes_image.yaml

$kompose convert -f docker-compose.yml -o kubernetes_image.yaml

命令完成后,输出如下.

After the command finish the ouput is the following.

WARN Volume mount on the host "/usr/docker/adpater/dbdata" isn't supported - ignoring path on the host
INFO Network integration is detected at Source, shall be converted to equivalent NetworkPolicy at Destination
WARN Volume mount on the host "/usr/docker/adpater/license.json" isn't supported - ignoring path on the host
WARN Volume mount on the host "/usr/docker/adpater/certificates/ssl.crt" isn't supported - ignoring path on the host
WARN Volume mount on the host "/usr/docker/adpater/certificates/ssl.key" isn't supported - ignoring path on the host
WARN Volume mount on the host "/usr/docker/adpater/server.xml" isn't supported - ignoring path on the host
INFO Network integration is detected at Source, shall be converted to equivalent NetworkPolicy at Destination

要将转换后的文件推送到kubernetes,我运行follwoing命令:

To push the converted file to kubernetes I run the follwoing command:

$ kubectl apply -f kubernetes_image.yaml

$kubectl apply -f kubernetes_image.yaml

NAME                      READY   STATUS             RESTARTS   AGE
mysql-557dd849c8-bsdq7    1/1     Running            1          17h
tomcat-7cd65d4556-spjbl   0/1     CrashLoopBackOff   76         18h

如果我运行: $ kubectl描述吊舱tomcat-7cd65d4556-spjbl 我收到以下消息:

if I run: $ kubectl describe pod tomcat-7cd65d4556-spjbl I get the following message:

Last State:     Terminated
      Reason:       ContainerCannotRun
      Message:      OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/usr/docker/adapter/server.xml\\\" to rootfs \\\"/var/lib/docker/overlay2/a6df90a0ef4cbe8b2a3fa5352be5f304cd7b648fb1381492308f0a7fceb931cc/merged\\\" at \\\"/var/lib/docker/overlay2/a6df90a0ef4cbe8b2a3fa5352be5f304cd7b648fb1381492308f0a7fceb931cc/merged/usr/local/tomcat/conf/server.xml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
      Exit Code:    127
      Started:      Sun, 31 May 2020 13:35:00 +0100
      Finished:     Sun, 31 May 2020 13:35:00 +0100
    Ready:          False
    Restart Count:  75
    Environment:    <none>
    Mounts:
      /run/secrets/rji_license.json from tomcat-hostpath0 (rw)
      /usr/local/tomcat/conf/server.xml from tomcat-hostpath3 (rw)
      /usr/local/tomcat/conf/ssl.crt from tomcat-hostpath1 (rw)
      /usr/local/tomcat/conf/ssl.key from tomcat-hostpath2 (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8dhnk (ro)

这是我的docker-compose.yml文件:

This is my docker-compose.yml file:

version: '3.6'

networks:
  integration:

services:
  mysql:
    environment:
      MYSQL_USER: 'integrationdb'
      MYSQL_PASSWORD: 'password'
      MYSQL_ROOT_PASSWORD: 'password'
    image: db:poc
    networks:
    - integration
    ports:
    - '3306:3306'
    restart: always
    volumes:
       - ./dbdata:/var/lib/mysql
  tomcat:
    image: adapter:poc
    networks:
    - integration
    ports:
    - '8080:8080'
    - '8443:8443'
    restart: always
    volumes:
      - ./license.json:/run/secrets/rji_license.json
      - ./certificates/ssl.crt:/usr/local/tomcat/conf/ssl.crt
      - ./certificates/ssl.key:/usr/local/tomcat/conf/ssl.key
      - ./server.xml:/usr/local/tomcat/conf/server.xml

工具版本:

kompose: 1.21.0 (992df58d8)

docker: 19.03.9

kubectl:Major:"1", Minor:"18"

我认为我的挑战是在这种类型的卷或文件中,我不知道如何将它们迁移或转换为kubernetes,并使tomcat pod运行正常. 有人可以帮我吗?

I think my challange here is whithin this type of volumes or files, I dont know how can I migrate or convert them to kubernetes and put the tomcat pod running fine. Could someone give me a hand?

 volumes:
          - ./license.json:/run/secrets/rji_license.json
          - ./certificates/ssl.crt:/usr/local/tomcat/conf/ssl.crt
          - ./certificates/ssl.key:/usr/local/tomcat/conf/ssl.key
          - ./server.xml:/usr/local/tomcat/conf/server.xml

提前谢谢.

推荐答案

当Kompose警告您时:

When Kompose warns you:

WARN Volume mount on the host "/usr/docker/adpater/license.json" isn't supported - ignoring path on the host

这意味着它无法将docker-compose.yml文件的此片段转换为Kubernetes语法:

It means that it can't translate this fragment of the docker-compose.yml file into Kubernetes syntax:

volumes:
    - ./license.json:/run/secrets/rji_license.json

在本地Kubernetes中,您需要在ConfigMap或Secret对象中提供此内容,然后在

In native Kubernetes, you'd need to provide this content in ConfigMap or Secret objects, and then mount the file into the pod. You can't directly access content on the system from which you're launching the containers.

在这里不能真正直接使用Kubernetes YAML文件.您可以运行 kompose convert 来生成框架文件,但是随后您将需要对其进行编辑以添加ConfigMaps,PersistentVolumeClaims(用于数据库存储)以及相关的卷和装入声明,然后运行kubectl apply -f来实际运行它们.我将把Kubernetes YAML文件检查到源代码管理中,并与Docker Compose设置并行维护它们.

You can't really get around directly working with the Kubernetes YAML files here. You could run kompose convert to generate the skeleton files, but then you'll need to edit those to add the ConfigMaps, PersistentVolumeClaims (for the database storage), and relevant volume and mount declarations, and then run kubectl apply -f to actually run them. I'd check the Kubernetes YAML files into source control, and maintain them in parallel with your Docker Compose setup.

这篇关于将docker-compose.yml文件转换为kubernetes的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆