【云原生 Kubernetes 系列】项目实战 一文吃透 Docker Compose 文件转换成 Kubernetes 资源_kompose转换


2. 要将 `docker-compose.yml` 转换为 kubectl 可用的文件,还需要运行 `kompose convert` 命令进行转换,然后运行 `kubectl apply -f <output file>` 进行创建。



$ kompose convert


运行结果类似如下:


![在这里插入图片描述](https://img-blog.csdnimg.cn/e63c5c802dce4309bf99041f5e161369.png)


接着运行命令:



$ kubectl apply -f frontend-service.yaml,redis-master-service.yaml,redis-slave-service.yaml,frontend-deployment.yaml,redis-master-deployment.yaml,redis-slave-deployment.yaml


运行结果如下:


![在这里插入图片描述](https://img-blog.csdnimg.cn/dde1c2841dad4711a3c72986dcd686b7.png)


现在我们部署的应用就在**Kubernetes** 中运行起来了。


3. 访问应用


如果在开发过程中使用了 **minikube**,需要执行下列命令:



$ minikube service frontend


如果没有使用的话,我们就需要查当前服务使用的IP,执行下面命令:



$ kubectl describe svc frontend

Name: frontend
Namespace: default
Labels: service=frontend
Selector: service=frontend
Type: LoadBalancer
IP: 10.0.0.183
LoadBalancer Ingress: 192.0.2.89
Port: 80 80/TCP
NodePort: 80 31144/TCP
Endpoints: 172.17.0.4:80
Session Affinity: None
No events.


如果使用的是云提供商,你的 IP 将在 `LoadBalancer Ingress` 字段给出。



$ curl http://192.0.2.89


## 二、kompose convert 实战


Kompose 支持两种驱动:OpenShift 和 Kubernetes。 你可以通过全局选项 --provider 选择驱动。如果没有指定, 会将 Kubernetes 作为默认驱动。


### 2.1、Kubernetes kompose convert实战


执行如下命令,实现 `docker-compose` 转换



$ kompose --file docker-voting.yml convert



WARN Unsupported key networks - ignoring
WARN Unsupported key build - ignoring
INFO Kubernetes file “worker-svc.yaml” created
INFO Kubernetes file “db-svc.yaml” created
INFO Kubernetes file “redis-svc.yaml” created
INFO Kubernetes file “result-svc.yaml” created
INFO Kubernetes file “vote-svc.yaml” created
INFO Kubernetes file “redis-deployment.yaml” created
INFO Kubernetes file “result-deployment.yaml” created
INFO Kubernetes file “vote-deployment.yaml” created
INFO Kubernetes file “worker-deployment.yaml” created
INFO Kubernetes file “db-deployment.yaml” created


查看转换之后的文件:



$ ls


转换结果:



db-deployment.yaml docker-compose.yml docker-gitlab.yml redis-deployment.yaml result-deployment.yaml vote-deployment.yaml worker-deployment.yaml
db-svc.yaml docker-voting.yml redis-svc.yaml result-svc.yaml vote-svc.yaml worker-svc.yaml


当然,你也可以同时提供多个 **docker-compose** 文件进行转换:



$ kompose -f docker-compose.yml -f docker-guestbook.yml convert



INFO Kubernetes file “frontend-service.yaml” created
INFO Kubernetes file “mlbparks-service.yaml” created
INFO Kubernetes file “mongodb-service.yaml” created
INFO Kubernetes file “redis-master-service.yaml” created
INFO Kubernetes file “redis-slave-service.yaml” created
INFO Kubernetes file “frontend-deployment.yaml” created
INFO Kubernetes file “mlbparks-deployment.yaml” created
INFO Kubernetes file “mongodb-deployment.yaml” created
INFO Kubernetes file “mongodb-claim0-persistentvolumeclaim.yaml” created
INFO Kubernetes file “redis-master-deployment.yaml” created
INFO Kubernetes file “redis-slave-deployment.yaml” created


查看转换之后的文件:



$ ls


转换结果:



mlbparks-deployment.yaml mongodb-service.yaml redis-slave-service.jsonmlbparks-service.yaml
frontend-deployment.yaml mongodb-claim0-persistentvolumeclaim.yaml redis-master-service.yaml
frontend-service.yaml mongodb-deployment.yaml redis-slave-deployment.yaml
redis-master-deployment.yaml


当提供多个 **docker-compose** 文件时,配置将会合并。任何通用的配置都将被后续文件覆盖。


### 2.2、OpenShift kompose convert 实战


方式千千万,唯有命令最简单:



$ kompose --provider openshift --file docker-voting.yml convert



WARN [worker] Service cannot be created because of missing port.
INFO OpenShift file “vote-service.yaml” created
INFO OpenShift file “db-service.yaml” created
INFO OpenShift file “redis-service.yaml” created
INFO OpenShift file “result-service.yaml” created
INFO OpenShift file “vote-deploymentconfig.yaml” created
INFO OpenShift file “vote-imagestream.yaml” created
INFO OpenShift file “worker-deploymentconfig.yaml” created
INFO OpenShift file “worker-imagestream.yaml” created
INFO OpenShift file “db-deploymentconfig.yaml” created
INFO OpenShift file “db-imagestream.yaml” created
INFO OpenShift file “redis-deploymentconfig.yaml” created
INFO OpenShift file “redis-imagestream.yaml” created
INFO OpenShift file “result-deploymentconfig.yaml” created
INFO OpenShift file “result-imagestream.yaml” created


**kompose** 还支持为服务中的构建指令创建 **buildconfig**。 默认情况下,它使用当前 **git** 分支的 **remote** 仓库作为源仓库,使用当前分支作为构建的源分支。 你可以分别使用 `--build-repo 和 --build-branch` 选项指定不同的源仓库和分支。



$ kompose --provider openshift --file buildconfig/docker-compose.yml convert



WARN [foo] Service cannot be created because of missing port.
INFO OpenShift Buildconfig using git@github.com:rtnpro/kompose.git::master as source.
INFO OpenShift file “foo-deploymentconfig.yaml” created
INFO OpenShift file “foo-imagestream.yaml” created
INFO OpenShift file “foo-buildconfig.yaml” created


## 三、其他转换方式


默认的 **kompose** 转换会生成 yaml 格式的 Kubernetes Deployment 和 Service 对象。 也可以选择通过 `-j` 参数生成 json 格式的对象。 也可以替换生成 Replication Controllers 对象、 Daemon Sets 或 Helm charts。



$ kompose convert -j


![在这里插入图片描述](https://img-blog.csdnimg.cn/79da5e26f30d46f9aa15cc9005153723.png)


`*-deployment.json` 文件中包含 Deployment 对象。



$ kompose convert --replication-controller


![在这里插入图片描述](https://img-blog.csdnimg.cn/c17676e106c847fcbf955cb16a3e0d70.png)


`*-replicationcontroller.yaml` 文件包含 Replication Controller 对象。 如果你想指定副本数(默认为 1),可以使用 --replicas 参数: `kompose convert --replication-controller --replicas 3`



$ kompose convert --daemon-set


![在这里插入图片描述](https://img-blog.csdnimg.cn/63c90f340ce947d1be8757d41a49c1a6.png)


`*-daemonset.yaml` 文件包含 DaemonSet 对象。


如果你想生成 **Helm** 可用的 **Chart**, 只需简单的执行下面的命令:



$ kompose convert -c


![在这里插入图片描述](https://img-blog.csdnimg.cn/fff16ceec2f24973bb675acf0bb747f5.png)



$ tree docker-compose/

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

586)]
[外链图片转存中…(img-TIMLqr49-1714264048586)]
[外链图片转存中…(img-YHkKPCvk-1714264048586)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值