我使用Kompose在ICP上尝试部署(备忘录)

简要概括

为了学习在容器上部署应用程序的Pod需要考虑的问题,我们进行了将在Docker Compose环境下运行的Node.js和MongoDB应用程序迁移到k8s环境的验证。作为k8s的执行环境,我们使用了IBM Cloud Private(ICP)。我们将学到的考虑事项等详细记录在备忘录中。

环境

以下是k8s的执行环境。

    • ICP 2.1.0.3 Cloud Native Edition

 

    • Ubuntu 16.04 LTS

 

    Docker CE 17.09.0

以下是我们用来验证的样本应用程序。(感谢Manjiii的帮助。)

    • GitHub(ソースコード)

 

    Docker ComposeでVM上にNodejsの開発(nginx-Nodejs-Mongodb)用の雛形を作成する

验证将在2018年5至7月进行。(最新的Kompose可能已更改规格和操作。)

给它做个图示

前进

    • 3つのコンテナから構成

 

    • 外部からはNginxとNode経由で接続

 

    永続データ有り(全コンテナ)
kompose1.png

转变之后

    • 3つのservice(Node Portが2つとCluster IPが1つ)

 

    • 3つのPod (1Podに1コンテナ)

 

    • Persistent Volume有り(全コンテナ)

注意:Ingress や ConfigMapの採用は別途検討する余地あり!

kompose2.png

考虑的要点

    • ICP上でもkompose up/downは正常に使用できる(当然ですね)

 

    • kompose up 実行時にはdocker-compose.ymlも参照されている

deployment、service、pvcなどのyamlファイルを編集した場合は、整合性がとれるようにdocker-compose.ymlにも修正が必要

kompose upのあと、手動で、kubectl apply -f service.ymlが必要
docker-compose.ymlでファイルをアタッチしている場合に、PVC用のyamlが生成されるが、そのまま適用すると正常に動作しないケースがある

k8sのボリュームのマウントの場合は、空のファイルシステムがマウントされることになる(上書きされる)ため、コンテナの起動で必要なファイル類はConfigMapを使うなどの考慮が必要

其他方便的事情

Kompose down很方便。

执行 kompose down 命令可以一次性删除 Service、Deployment 和 PVC。

$ kompose down
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/mongodb/tmp" isn't supported - ignoring path on the host
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/mongodb/log" isn't supported - ignoring path on the host
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/nginx/conf.d" isn't supported - ignoring path on the host
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/nginx/www" isn't supported - ignoring path on the host
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/nginx/log" isn't supported - ignoring path on the host
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/node/src" isn't supported - ignoring path on the host
WARN Volume mount on the host "/home/kompose/gitwork/Skeleton-nginx-nodejs-mongodb/Skeleton-nginx-nodejs-mongodb/dockers/node/log" isn't supported - ignoring path on the host
INFO Deleting application in "default" namespace
INFO Successfully deleted Service: mongodb
INFO Successfully deleted Service: nginx
INFO Successfully deleted Service: node-app
INFO Successfully deleted Deployment: mongodb
INFO Successfully deleted PersistentVolumeClaim: datastrage
INFO Successfully deleted PersistentVolumeClaim: mongodb-claim1
INFO Successfully deleted PersistentVolumeClaim: mongodb-claim2
INFO Successfully deleted Deployment: nginx
INFO Successfully deleted PersistentVolumeClaim: nginx-claim0
INFO Successfully deleted PersistentVolumeClaim: nginx-claim1
INFO Successfully deleted PersistentVolumeClaim: nginx-claim2
INFO Successfully deleted Deployment: node-app
INFO Successfully deleted PersistentVolumeClaim: node-app-claim0
INFO Successfully deleted PersistentVolumeClaim: node-app-claim1
$

ICP中编辑PV/PVC

使用json模式在创建类似的PV时更容易进行编辑。

广告
将在 10 秒后关闭
bannerAds