手把手教您用 Docker Compose 将应用程序部署到 Kubernetes (附完整代码)

手把手教您用 Docker Compose 将应用程序部署到 Kubernetes (附完整代码)_第1张图片

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散


说在前面


在2017年 DockerCon 欧洲大会上, Wordsmith 作为一个演示项目呈现在众多观众面前。同时, Docker 公司也宣布将 Kubernetes 集成到 Docker 平台。今天,我将带大家一起用 Docker Compose 将应用程序部署到 Kubernetes ,文中所有的代码都可以点击文尾处“阅读原文获取。


640?wx_fmt=png

手把手教您用 Docker Compose 将应用程序部署到 Kubernetes (附完整代码)_第2张图片


用于演示的应用程序跨三个容器运行,分别是:


  • db 容器 —— 用于存储“words”的数据库;

  • words 容器 —— 用于从数据库中读取“words”的 Java REST API ;

  • web 容器 —— 一个 Go web 应用程序,它用于调用 API 并将“words”构建成句子;

640?wx_fmt=png


构 建


从源码到构建和运行这款应用程序唯一要用到的就是 Docker 。克隆这个镜像仓库,然后使用 Docker Compose 来构建全部镜像,如下所示:

 

cd k8s-wordsmith-demo

docker-compose build


注:或者,您可以使用 “docker-compose pull”命令从 Docker Hub 中下载预构建镜像。

640?wx_fmt=png


部署到 Docker 应用栈


最新版本的 Docker for Mac 内置了 Kubernetes 。


Docker 允许您使用简单的 Docker Compose 文件格式将复杂的应用程序部署到 Kubernetes 。这意味着,您可以使用“docker-compose.yml”文件将 wordsmith 应用程序部署到本地的 Kubernetes 集群。


手把手教您用 Docker Compose 将应用程序部署到 Kubernetes (附完整代码)_第3张图片


首先利用 docker 版本(Docker for Mac同时支持 Kubernetes 和 Docker Swarm 编排工具)来检查 Docker 是否将 Kubernetes 或 Docker Swarm 作为编排工具运行,输入以下命令:


docker version -f '{{ .Client.Orchestrator }}'


注:您可以使用 DOCKER_ORCHESTRATOR 环境变量来切换编排工具,将其设置为 kubernetes 或 swarm 。


使用 compose 文件将该应用程序部署到 Kubernetes 应用栈中,操作如下所示:


export DOCKER_ORCHESTRATOR=kubernetes

docker stack deploy wordsmith -c docker-compose.yml


Docker for Mac 包含了“kubectl”命令行,因此您可以直接使用 kubernetes 集群。检查该服务是否成功启动,你应该看到以下内容:

 

$ kubectl get svc

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

db           ClusterIP      None                     55555/TCP        2m

kubernetes   ClusterIP      10.96.0.1                443/TCP          38d

web          LoadBalancer   10.107.215.211        8080:30220/TCP   2m

words        ClusterIP      None                     55555/TCP        2m


检查 Pod 是否正在运行。您应该可以看到(如下所示)用于数据库和 web 组件的 Pod ,以及专门用于“words” API 的5个 Pod (在 compose 文件中,它被指定为副本计数) 。


$ kubectl get pods

NAME                   READY     STATUS    RESTARTS   AGE

db-8678676c79-h2d99    1/1       Running   0          1m

web-5d6bfbbd8b-6zbl8   1/1       Running   0          1m

words-858f6678-6c8kk   1/1       Running   0          1m

words-858f6678-7bqbv   1/1       Running   0          1m

words-858f6678-fjdws   1/1       Running   0          1m

words-858f6678-rrr8c   1/1       Running   0          1m

words-858f6678-x9zqh   1/1       Running   0          1m


然后登录 http://localhost:8080 来查看该网站。每次刷新页面时,都会看到由 API 调用生成的不同语句。

640?wx_fmt=png


使用 Kubernetes Manifest 

进行部署


您可以使用 Kubernetes Manifest 将相同的应用程序部署到Kubernetes。这在 Kubernetes 部署、服务和 pod 规范方面描述了相同的应用程序。


首先删除 Kubernetes 应用栈,如下所示:


docker stack rm wordsmith


注:或者,您也可以让 Docker 应用栈继续运行,然后在新的 Kubernetes 命名空间 中创建第二个部署。


现在使用“kubectl”命令来应用 Kubernetes Manifest ,如下所示:


kubectl apply -f kube-deployment.yml


现在登录 http://localhost:8081,您将看到一个与 http://localhost:8080 相同的网站。


640?wx_fmt=png


点击下列标题,阅读更多干货


  • 教程丨使用 Docker Compose 将 APP 快速部署到 Kubernetes

  • 基于 Docker EE 的 CI/CD 研讨会,看技术大神如何提高软件交付质量和速度

  • 免费自学Docker的最佳方法——Play With Docker(PWD)

  • Docker就业市场持续增长,5条建议让您快速掌握Docker技能!


如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!

 手把手教您用 Docker Compose 将应用程序部署到 Kubernetes (附完整代码)_第4张图片


640?wx_fmt=gif点击下方“阅读全文”,获取代码

你可能感兴趣的:(手把手教您用 Docker Compose 将应用程序部署到 Kubernetes (附完整代码))