将docker-compose.yml文件转换为kubernetes

问题描述 投票:0回答:1

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

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

命令完成后,输出如下。

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命令:

$$ 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描述pod tomcat-7cd65d4556-spjbl我收到以下消息:

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文件:


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运行正常。有人可以帮我吗?

 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

预先感谢。

docker tomcat kubernetes kompose
1个回答
0
投票

当Kompose警告您:

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

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

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

在本地Kubernetes中,您需要在ConfigMap或Secret对象中提供此内容,然后在mount the file into the pod中提供。您不能直接从要启动容器的系统上访问内容。

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

© www.soinside.com 2019 - 2024. All rights reserved.