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/
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
586)]
[外链图片转存中…(img-TIMLqr49-1714264048586)]
[外链图片转存中…(img-YHkKPCvk-1714264048586)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新