Docker Desktop 版本助力 Kubernetes 集群,一键部署不再是梦

screenshot

本文首发自“Docker公司”公众号(ID:docker-cn)
编译丨小东
每周一、三、五 与您不见不散!


上周,KubeCon 欧洲大会在哥本哈根成功举办,让我们来回顾那些在 Docker 和 Kubernetes 读者中最受欢迎的帖子吧。对于那些还没有尝试过 Docker EE 2.0 的用户来说,这篇文章的重点在于详细介绍了如何在 Docker for Desktops 中使用 Docker compose 文件来将应用程序直接部署到 Kubernetes 集群上。


如果在您的桌面(Docker for Mac 或 Docker for Windows Desktop)上运行的是 Docker 的尝鲜版本,那么现在您就可以通过点击一个按钮来构建单节点的 Kubernetes 集群了。虽然我不是开发人员,但我认为这对于已经在 Macbook 或 Windows 笔记本电脑上使用 Docker 的数百万开发人员来说是个好消息,因为他们现在已经拥有了完全兼容的 Kubernetes 集群,无需安装任何其他辅助工具。

使用 Docker 来构建容器化应用程序的开发人员经常会使用构建 Docker Compose 文件的方式来部署应用程序。随着将 Kubernetes 集成到 Docker 的产品线,某些开发人员想要利用现有的 Docker Compose 文件,在 Kubernetes 中来部署这些应用程序。

通过 Docker Desktop(以及 Docker 企业版),您可以使用 Docker Compose 将应用程序直接部署到 Kubernetes 集群上。


下面我将详细介绍它的工作原理:

假设我有一个简单的 Docker Compose 文件,如下面所示,它包含三层应用:Web、Words 和 db。

注意:我们的 Web 前端设置为从主机上的 80 端口路由到服务器的 80 端口(以及随后的底层容器)。另外,我们的“Words”服务将会开启 5 个副本。

services:

web:

build: web

image: dockerdemos/lab-web

volumes:

- "./web/static:/static"

ports:

- "80:80"

words:

build: words

image: dockerdemos/lab-words

deploy:

replicas: 5

endpoint_mode: dnsrr

resources:

limits:

memory: 16M

reservations:

memory: 16M

db:

build: db

image: dockerdemos/lab-db

我使用的是 Docker for Mac 版本,并将 Kubernetes 设置为我的默认编排工具。为了部署这个应用程序,我仅用了“docker stack deploy”命令,并向其提供了一个名为“words.yaml”的 Compose 文件以及一个名为“words”的应用栈。真正让人感到惊喜的是,它与 Docker Swarm 所使用的命令完全相同,如下所示:

$ docker stack deploy --compose-file words.yaml words

Stack words was created

Waiting for the stack to be stable and running...

- Service db has one container running

- Service words has one container running

- Service web has one container running

Stack words is stable and running

使用 Compose 文件创建的 deployment、pods 和 services 都可以通过使用“kubectl”命令来查看,如下所示:

$ kubectl get deployment

NAME     DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE

db       1        1        1           1          2m

web      1        1        1           1          2m

words    5        5        5           5          2m

$ kubectl get pods

NAME                    READY    STATUS   RESTARTS  AGE

db-5489494997-2krr2     1/1      Running  0         2m

web-dd5755876-dhnkh     1/1      Running  0         2m

words-86645d96b7-8whpw  1/1      Running  0         2m

words-86645d96b7-dqwxp  1/1      Running  0         2m

words-86645d96b7-nxgbb  1/1      Running  0         2m

words-86645d96b7-p5qxh  1/1      Running  0         2m

words-86645d96b7-vs8x5  1/1      Running  0         2m

$ kubectl get services

NAME           TYPE         CLUSTER-IP      EXTERNAL-IP   PORT(S)      AGE

db             ClusterIP    None                   55555/TCP    2m

web            ClusterIP    None                   55555/TCP    2m

web-published  LoadBalancer 10.104.198.84       80:32315/TCP 2m

words          ClusterIP    None                   55555/TCP    2m

如果您查看了上面的服务列表,那么您可能会注意到那些乍一看有点奇怪的事情。没错就是 “web” 和“web-published”服务。其中“web” 服务负责应用程序内部通信,而“web-published”服务(这是一个由 Docker for Mac 中的 vpnkit 所支持的负载均衡器)将会把我们的 Web 前端展现给全世界。


所以如果我们现在访问 http:// localhost:80,那么我们就可以看到正在运行的应用程序了。您可以从下列渠道在 Elton 录制的视频(全长 8 分钟)中看到整个过程:

Docker 官方入口:http://t.cn/R3Z1WJq


screenshot

现在,如果我们想要删除服务,您可能首先想到的是使用“kubectl”命令来删除部署。但是,实际上您可以使用“docker stack rm”命令,该命令将删除我们引入应用栈时所创建的所有应用,如下所示:

$ docker stack rm words

Removing stack: words

$ kubectl get deployment

No resources found

对我来说,最惊喜的就是整个过程都可以使用 Docker EE来完成,我只需要将 Compose 文件直接部署到 Docker EE 的用户界面就可以了。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/591202

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。