我使用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経由で接続
- 永続データ有り(全コンテナ)
转变之后
-
- 3つのservice(Node Portが2つとCluster IPが1つ)
-
- 3つのPod (1Podに1コンテナ)
-
- Persistent Volume有り(全コンテナ)
注意:Ingress や ConfigMapの採用は別途検討する余地あり!
考虑的要点
-
- 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时更容易进行编辑。