K8S 实用工具之五-kompose
2023/3/7 21:21:57
本文主要是介绍K8S 实用工具之五-kompose,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
开篇
📜 引言:
- 磨刀不误砍柴工
- 工欲善其事必先利其器
- 第一篇:《K8S 实用工具之一 - 如何合并多个 kubeconfig?》
- 第二篇:《K8S 实用工具之二 - 终端 UI K9S》
- 第三篇:《K8S 实用工具之三 - 图形化 UI Lens》
- 第四篇:《K8S 实用工具之四 - kubectl实用插件》
Kubernetes + Compose = Kompose
从 Docker Compose 到 Kubernetes 的转换工具
什么是 Kompose?
Kompose 是 dockercompose 到 Kubernetes (或 OpenShift) 等容器编排器的转换工具。
为什么开发者喜欢它?
- 使用 Docker Compose 简化开发过程,然后将容器部署到生产集群
- 转换你的
docker-compose.yaml
需要一个简单的命令kompose convert
易如反掌
- 找一个
docker-compose.yaml
文件; - 执行:
kompose convert
- 执行
kubectl apply
并检查您的 k8s 集群为您新部署的容器!
$ wget https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose-v3.yaml -O docker-compose.yaml $ kompose convert $ kubectl apply -f . $ kubectl get po NAME READY STATUS RESTARTS AGE frontend-591253677-5t038 1/1 Running 0 10s redis-master-2410703502-9hshf 1/1 Running 0 10s redis-slave-4049176185-hr1lr 1/1 Running 0 10s
实战
比如我要在 K8S 上安装 RssHub,这是官方提供的 docker-compose.yml
:
version: '3' services: rsshub: image: diygod/rsshub restart: always ports: - '1200:1200' environment: NODE_ENV: production CACHE_TYPE: redis REDIS_URL: 'redis://redis:6379/' PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' depends_on: - redis - browserless browserless: # See issue 6680 image: browserless/chrome:1.43-chrome-stable restart: always ulimits: core: hard: 0 soft: 0 redis: image: redis:alpine restart: always volumes: - redis-data:/data volumes: redis-data:
执行 kompose convert
后,从 docker-compose.yml
生成以下文件:
$ ll .rw-r--r-- 711 casey 1 Dec 21:20 browserless-deployment.yaml .rw-r--r-- 715 casey 1 Dec 21:20 docker-compose.yml .rw-r--r-- 243 casey 1 Dec 21:20 redis-data-persistentvolumeclaim.yaml .rw-r--r-- 867 casey 1 Dec 21:20 redis-deployment.yaml .rw-r--r-- 1.0k casey 1 Dec 21:20 rsshub-deployment.yaml .rw-r--r-- 352 casey 1 Dec 21:20 rsshub-service.yaml
每个 docker-compose 容器,会生成为一个 deployment,并为你自动转换好 label 和 env 等字段,以 rsshub-deployment.yaml
为例:
apiVersion: apps/v1 kind: Deployment metadata: annotations: kompose.cmd: kompose convert kompose.version: 1.26.0 (40646f47) creationTimestamp: null labels: io.kompose.service: rsshub name: rsshub spec: replicas: 1 selector: matchLabels: io.kompose.service: rsshub strategy: {} template: metadata: annotations: kompose.cmd: kompose convert kompose.version: 1.26.0 (40646f47) creationTimestamp: null labels: io.kompose.service: rsshub spec: containers: - env: - name: CACHE_TYPE value: redis - name: NODE_ENV value: production - name: PUPPETEER_WS_ENDPOINT value: ws://browserless:3000 - name: REDIS_URL value: redis://redis:6379/ image: diygod/rsshub name: rsshub ports: - containerPort: 1200 resources: {} restartPolicy: Always status: {}
Docker compose 的 ports
部分,会转换为 SVC,以 rsshub-service.yaml
为例:
apiVersion: v1 kind: Service metadata: annotations: kompose.cmd: kompose convert kompose.version: 1.26.0 (40646f47) creationTimestamp: null labels: io.kompose.service: rsshub name: rsshub spec: ports: - name: "1200" port: 1200 targetPort: 1200 selector: io.kompose.service: rsshub status: loadBalancer: {}
Docker compose 的 volumes
字段,会转换为 PVC,以 redis-data-persistentvolumeclaim.yaml
为例:
apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: redis-data name: redis-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Mi status: {}
安逸!
安装
# Linux curl -L https://github.com/kubernetes/kompose/releases/download/v1.25.0/kompose-linux-amd64 -o kompose # macOS curl -L https://github.com/kubernetes/kompose/releases/download/v1.25.0/kompose-darwin-amd64 -o kompose chmod +x kompose sudo mv ./kompose /usr/local/bin/kompose
That’s All
🎉🎉🎉
参考链接
- Kubernetes + Compose = Kompose
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
这篇关于K8S 实用工具之五-kompose的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在Kubernetes (k8s) 中搭建三台 Nginx 服务器怎么实现?-icode9专业技术文章分享
- 2024-11-05基于Kubernetes的自定义AWS云平台搭建指南
- 2024-11-05基于Kubernetes Gateway API的现代流量管理方案
- 2024-11-05在Kubernetes上部署你的第一个应用:Nginx服务器
- 2024-11-05利用拓扑感知路由控制Kubernetes中的流量
- 2024-11-05Kubernetes中的层次命名空间:更灵活的资源管理方案
- 2024-11-055分钟上手 Kubernetes:精简实用的 Kubectl 命令速查宝典!
- 2024-10-30K8s 容器的定向调度与亲和性
- 2024-10-28云原生周刊:K8s未来三大发展方向 丨2024.10.28
- 2024-10-25亚马逊弹性Kubernetes服务(EKS)实战:轻松搭建Kubernetes平台