编排
预计阅读时间:9分钟
容器化过程的可移植性和可重复性意味着我们有机会跨云和数据中心移动和扩展我们的容器化应用程序。容器有效地保证了这些应用程序在任何地方都可以以相同的方式运行,从而使我们能够快速,轻松地利用所有这些环境。此外,随着我们扩大应用程序的规模,我们将需要一些工具来帮助自动维护那些应用程序,能够自动替换发生故障的容器,并管理这些容器在其生命周期内的更新和重新配置。
用于管理,扩展和维护容器化应用程序的工具称为协调器,其中最常见的示例是Kubernetes和Docker Swarm。这两个编排器的开发环境部署由Docker Desktop提供,我们将在本指南中使用它来创建我们的第一个编排,容器化的应用程序。
高级模块教您如何:
启用Kubernetes
Docker Desktop将为您快速轻松地设置Kubernetes。请遵循适用于您的操作系统的设置和验证说明:
苹果电脑
-
安装Docker Desktop之后,您应该在菜单栏中看到一个Docker图标。单击它,然后导航到“首选项” >“ Kubernetes”。
-
选中标记为启用Kubernetes的复选框,然后单击“应用并重新启动”。Docker Desktop将自动为您设置Kubernetes。当您在“首选项”菜单中的“正在运行的Kubernetes ”旁边看到绿灯时,便会知道Kubernetes已成功启用。
-
为了确认Kubernetes已启动并正在运行,请创建一个名为的文本文件
pod.yaml
,其内容如下:apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:3.5 command: ["ping", "8.8.8.8"]
这描述了具有单个容器的容器,将简单的ping隔离到8.8.8.8。
-
在终端中,导航到创建位置
pod.yaml
并创建窗格:kubectl apply -f pod.yaml
-
检查您的Pod是否已启动并正在运行:
kubectl get pods
您应该看到类似以下内容的内容:
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4s
-
检查您是否获得了执行ping操作所需的日志:
kubectl logs demo
您应该看到一个健康的ping过程的输出:
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms 64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms 64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms ...
-
最后,拆下您的测试吊舱:
kubectl delete -f pod.yaml
视窗
-
安装Docker Desktop之后,您应该在系统托盘中看到一个Docker图标。右键单击它,然后浏览设置> Kubernetes。
-
选中标记为启用Kubernetes的复选框,然后单击“应用并重新启动”。Docker Desktop将自动为您设置Kubernetes。当您在“设置”菜单中的“正在运行的Kubernetes ”旁边看到绿灯时,就会知道Kubernetes已成功启用。
-
为了确认Kubernetes已启动并正在运行,请创建一个名为的文本文件
pod.yaml
,其内容如下:apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:3.5 command: ["ping", "8.8.8.8"]
这描述了具有单个容器的容器,将简单的ping隔离到8.8.8.8。
-
在PowerShell中,导航到创建位置
pod.yaml
并创建pod:kubectl apply -f pod.yaml
-
检查您的Pod是否已启动并正在运行:
kubectl get pods
您应该看到类似以下内容的内容:
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4s
-
检查您是否获得了执行ping操作所需的日志:
kubectl logs demo
您应该看到一个健康的ping过程的输出:
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms 64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms 64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms ...
-
最后,拆下您的测试吊舱:
kubectl delete -f pod.yaml
启用Docker Swarm
Docker Desktop主要在Docker Engine上运行,它具有运行Swarm所需的一切内置功能。请按照适用于您的操作系统的设置和验证说明进行操作:
苹果电脑
-
打开一个终端,并初始化Docker Swarm模式:
docker swarm init
如果一切顺利,您应该看到类似以下的消息:
Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
-
运行一个简单的Docker服务,该服务使用基于高山的文件系统,并将ping隔离到8.8.8.8:
docker service create --name demo alpine:3.5 ping 8.8.8.8
-
检查您的服务是否创建了一个正在运行的容器:
docker service ps demo
您应该看到类似以下内容的内容:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 463j2s3y4b5o demo.1 alpine:3.5 docker-desktop Running Running 8 seconds ago
-
检查您是否获得了执行ping操作所需的日志:
docker service logs demo
您应该看到一个健康的ping过程的输出:
demo.1.463j2s3y4b5o@docker-desktop | PING 8.8.8.8 (8.8.8.8): 56 data bytes demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms ...
-
最后,拆除您的测试服务:
docker service rm demo
视窗
-
打开Powershell,并初始化Docker Swarm模式:
docker swarm init
如果一切顺利,您应该看到类似以下的消息:
Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
-
运行一个简单的Docker服务,该服务使用基于高山的文件系统,并将ping隔离到8.8.8.8:
docker service create --name demo alpine:3.5 ping 8.8.8.8
-
检查您的服务是否创建了一个正在运行的容器:
docker service ps demo
您应该看到类似以下内容的内容:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 463j2s3y4b5o demo.1 alpine:3.5 docker-desktop Running Running 8 seconds ago
-
检查您是否获得了执行ping操作所需的日志:
docker service logs demo
您应该看到一个健康的ping过程的输出:
demo.1.463j2s3y4b5o@docker-desktop | PING 8.8.8.8 (8.8.8.8): 56 data bytes demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms ...
-
最后,拆除您的测试服务:
docker service rm demo
结论
至此,您已经确认可以在Kubernetes和Swarm中运行简单的容器化工作负载。下一步将是编写Kubernetes yaml,它描述了如何在Kubernetes上运行和管理这些容器。
要了解如何编写堆栈文件以帮助您在Swarm上运行和管理容器,请参阅部署到Swarm。
CLI参考
有关本文中使用的所有CLI命令的更多文档,请参见:
编排,部署,kubernetes,群