docker-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1257800
  • 博文数量: 1140
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 11688
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-07 16:26
个人简介

linux学习小标兵,专注linux资讯分享,技术文章分享

文章分类

全部博文(1140)

文章存档

2023年(97)

2022年(285)

2021年(265)

2020年(248)

2019年(213)

2018年(32)

我的朋友
最近访客
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2023-04-05 22:11:04

导读 在 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 格式,{banned}最佳近还加入了持久卷所有权(pvc)、以及多容器 pod 的支持。除了缺省的 kubernetes 之外,我们还支持 openshift 的发布能力。kompose 现在还出现在了 fedora 包中,未来也会进入  中去。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 文件启动的。

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

前往 kubernetes incubator 获取 kompose,可以帮助你轻松地把应用从 docker compose 迁移为 kubernetes 集群应用。


阅读(696) | 评论(0) | 转发(0) |
0

上一篇:

下一篇:

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图