首页 > 其他分享 >Docker-compose 到 Kubernetes 的迁移工具!

Docker-compose 到 Kubernetes 的迁移工具!

时间:2023-04-08 09:12:19浏览次数:60  
标签:Compose Kubernetes redis compose Docker Kompose

在 skippbox,我们开发了 Kompose 这一工具,他能够自动把 Docker Compose 应用转换为 Kubernetes 描述文件。利用一个简单的 kompose up 命令,就可以在 Kubernetes 集群上启动 Compose 应用。我们非常乐于将其捐献给 Kubernetes Incubator。下面介绍一下这一工具的开发动机和用法。

Docker 给了开发者以巨大的帮助。让每个人都能够从 Docker Registry 启动一个打包好的 Docker 应用。为了对付多容器应用, Docker 开发了 Docker-compose (也就是 Compose)。Compose 借助 yaml 格式的描述文件来定义一个多容器应用,然后就可以用一个简单的 docker-compose up来启动这一应用中的多个容器。然而,Compose 只能够在本地或者 Docker Swarm 集群中运行。

那如果我们需要在 Swarm 之外运行怎么办?比如 Kubernetes?Compose 格式并非为分布式而诞生的。所以,你只能为你选择的容器编排工具重新编写应用描述文件。

我们利用 Kompose,能够简单的完成将应用从 Docker Swarm 到 Kubernetes 的转换过程,这样就为 Docker 用户敞开了 Kubernetes 的大门。

今年夏天,来自红帽的 Tomas Kral 和 Suraj Deshmukh,以及来自 Google 的 Janet Kuo,他们和 Kompose 的主要开发者 Nguyen An-Tu 一起为 Kompose 锦上添花。我们把 Kompose 提交给 Kubernets Incubator,得到了 Kubernetes 社区的支持,现在可以在 Kubernetes Incubator 找到 Kompose。

Kompose 目前支持 Docker-compose v2 格式,最近还加入了持久卷所有权(PVC)、以及多容器 Pod 的支持。除了缺省的 Kubernetes 之外,我们还支持 Openshift 的发布能力。Kompose 现在还出现在了 Fedora 包中,未来也会进入 CentOS 中去。Kompose 是一个 Golang 应用,可以从 Github 上获取。下面让我们跳过 Build 环节直接进入实例。

Docker 的留言板应用

留言板应用是 Kubernetes 的权威示例。如果要用 Docker Compose 来实现留言板,可以用下面的代码:

version: "2"

services:
redis-master:
image: gcr.io/google_containers/redis:e2e
ports:
- "6379"
redis-slave:
image: gcr.io/google_samples/gb-redisslave:v1
ports:
- "6379"
environment:
- GET_HOSTS_FROM=dns
frontend:
image: gcr.io/google-samples/gb-frontend:v4
ports:
- "80:80"
environment:
- GET_HOSTS_FROM=dns

其中包含了三个服务:

一个 Redis 主节点;
一组能够横向扩展并借助 DNS 找到 Master 的 Redis 从节点;
暴露于 80 端口的 PHP 前端。
这些组合在一起,让用户可以发表留言,并保存在 Redis 集群中。

要启动这个应用:

$ docker-compose -f docker-guestbook.yml up -d
Creating network "examples_default" with the default driver
Creating examples_redis-slave_1
Creating examples_frontend_1
Creating examples_redis-master_1

这就是一个简单的 Docker 用法,下面我肯看看如何在不重写任何东西的情况下,让这些工作在 Kubernetes 上完成。

Kompose 的留言板应用

Kompose 目前有三个主要的命令:up、down 以及 convert。为了行文方便,我们只简单说一下留言吧应用的启动。

跟 docker-compose 类似,我们可以用 kompose up 命令处理 Docker compose 文件,来启动应用:

$ kompose -f ./examples/docker-guestbook.yml up
We are going to create Kubernetes deployment and service for your dockerized application.
If you need more kind of controllers, use 'kompose convert' and 'kubectl create -f' instead.

INFO[0000] Successfully created service: redis-master
INFO[0000] Successfully created service: redis-slave
INFO[0000] Successfully created service: frontend
INFO[0000] Successfully created deployment: redis-master
INFO[0000] Successfully created deployment: redis-slave
INFO[0000] Successfully created deployment: frontend

Application has been deployed to Kubernetes. You can run 'kubectl get deployment,svc' for details.

Kompose 自动把 Docker-compose 文件转为 Kuberntes 对象。缺省情况下,他会为一个 Compose 服务创建一个 Deployment 以及一个服务。另外还能自动检测当前的 Kuberntes 端点,并在上面创建对象。可以通过一系列的选项来创建 Replication Controller、Replica Set 或者 Daemon Set。

就这样完成了自动转换,如果你了解一些 Kubernetes 的话,可以用 kubectl 命令来看看集群上运行的留言板。

$ kubectl get pods,svc,deployments
NAME READY STATUS RESTARTS AGE
frontend-3780173733-0ayyx 1/1 Running 0 1m
redis-master-3028862641-8miqn 1/1 Running 0 1m
redis-slave-3788432149-t3ejp 1/1 Running 0 1m
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend 10.0.0.34 80/TCP 1m
redis-master 10.0.0.219 6379/TCP 1m
redis-slave 10.0.0.84 6379/TCP 1m
NAME DESIRED CURRENT UP-TO-DATE

AVAILABLE AGE
frontend 1 1 1 1 1m
redis-master 1 1 1 1 1m
redis-slave 1 1 1 1 1m

看到了三个服务、三个 Deployment 以及三个 Pod。可以通过 frontend 服务来访问留言板应用。只不过这次的留言板,是从 Docker-Compose 文件启动的。

Docker-compose 到 Kubernetes 的迁移工具!Docker-compose 到 Kubernetes 的迁移工具!

以上给读者快速的介绍了一下 kompose。还有很多激动人心的特性,例如创建不同类型的资源、创建 Helm Chars,甚至可以使用试验性的 Docker bundle 格式进行输入(Lachlan Evenson 的博客:using a Docker bundle with Kubernetes)。可以在我们的 KubeCon 上的视频 中看到完整的演示。

前往 Kubernetes incubator 获取 Kompose,可以帮助你轻松地把应用从 Docker Compose 迁移为 Kubernetes 集群应用。

原文来自:http://geek.csdn.net/news/detail/131711

本文地址:https://www.linuxprobe.com/docker-compose-kubernetes.html编辑:高军,审核员:逄增宝

本文原创地址:https://www.linuxprobe.com/docker-compose-kubernetes.html

标签:Compose,Kubernetes,redis,compose,Docker,Kompose
From: https://www.cnblogs.com/linuxpro/p/17297905.html

相关文章

  • Docker 从入门到精通(二) 搭建本地仓库
    一,本地安装#yuminstall-ypython-devellibevent-develpython-pipgccxz-devel#pipinstalldocker-registry也可以从docker-registry(https://github.com/docker/docker-registry)项目下载源码进行安装。二,使用官方registry镜像#dockerrun-d-p5000:5000registry......
  • Kubernetes 基础入门
    一、Kubernetes简介一、背景1、部署方式的变迁传统时代的部署在物理服务器上运行应用程序无法为应用程序定义资源边界导致资源分配问题例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。......
  • docker学习
    Docker是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何支持Docker的环境中,以消除“在我电脑上可以运行,在你电脑上不能运行”的问题。以下是Docker的基本使用方法:安装Docker:首先,您需要在您的系统上安装Doc......
  • docker in docker运行pipeline
    一、配置JenkinsMaster挂载Dockerdockerrun--namejenkins-itd--privileged=true-p8081:8080-p50000:50000-v/etc/localtime:/etc/localtime:ro-v/var/run/docker.sock:/var/run/docker.sock-v/bin/docker:/usr/bin/docker-v/mnt/jenkins-data:/var/......
  • docker push 遇到 no basic auth credentials
      当遇到上面问题时,请在本地先登录一下远程仓库: dockerlogin http://101.201.237.xxx:5000......
  • 软件杯大赛-A5-学习笔记-Kubernetes
    一、kubernetes1.基础知识1.1硬件1.1.1节点(Node)节点是kubernetes中最小的计算硬件单元。是集群中单个机器的表示。可以对节点进行抽象的理解,即简单的将每台机器看作一组可以使用的CPU和RAM资源。这样,任何机器都可以替代Kubernetes集群中的任何其他机器。1.1.2集群集群......
  • docker-compose的安装
    1.去官网(https://github.com/docker/compose/releases)下载docker-compose-linux-x86_64,自行选择最新版或者所需要的版本即可建议直接通过curl下载到服务器上,若内网服务器就只能通过上传了,下面附上本人下载连接(GitHub太慢了,通过https://ghproxy.com/进行了一次代理)curl-SLhttp......
  • 使用Docker发布普通web项目(非springboot项目)
    公司的项目比较旧,还是普通的web格式,只能打个war包放在tomcat中运行,现在要上docker发布,在此做下记录DockerDesktop开发机是win10,想要打包镜像需要安装DockerDesktop,安装前需要在bios里面开启虚拟化支持。然后按照官方安装教程一步一步安装。Dockerfile然后在项目根目录编写doc......
  • docker-compose运行mysql 8.0.2
    docker-compose.yamlversion:'3.9'services:core:depends_on:mysql:condition:service_healthymysql:image:mysql:8.0.32container_name:mysql:8.0.32restart:alwayscommand:--default-authentication-plu......
  • Docker+Rancher + Harbor + GitLab + Jenkins 搭建CI/CD环境
    Docker+Rancher+Harbor+GitLab+Jenkins搭建CI/CD环境一.环境说明机器名称系统版本IP地址k8s版本docker版本k8s-rancher-205-10ubuntu22.04192.168.205.101.25.220.10.18k8s-master-205-11ubuntu22.04192.168.205.111.25.220.10.18k8s-worker01-205-12ubuntu22.04192.168.......