编排

预计阅读时间:9分钟

容器化过程的可移植性和可重复性意味着我们有机会跨云和数据中心移动和扩展我们的容器化应用程序。容器有效地保证了这些应用程序在任何地方都可以以相同的方式运行,从而使我们能够快速,轻松地利用所有这些环境。此外,随着我​​们扩大应用程序的规模,我们将需要一些工具来帮助自动维护那些应用程序,能够自动替换发生故障的容器,并管理这些容器在其生命周期内的更新和重新配置。

用于管理,扩展和维护容器化应用程序的工具称为协调器,其中最常见的示例是KubernetesDocker Swarm。这两个编排器的开发环境部署由Docker Desktop提供,我们将在本指南中使用它来创建我们的第一个编排,容器化的应用程序。

高级模块教您如何:

  1. 在开发机器上设置和使用Kubernetes环境
  2. 在开发机器上设置和使用Swarm环境

启用Kubernetes

Docker Desktop将为您快速轻松地设置Kubernetes。请遵循适用于您的操作系统的设置和验证说明:

苹果电脑

  1. 安装Docker Desktop之后,您应该在菜单栏中看到一个Docker图标。单击它,然后导航到“首选项” >“ Kubernetes”

  2. 选中标记为启用Kubernetes的复选框,然后单击“应用并重新启动”。Docker Desktop将自动为您设置Kubernetes。当您在“首选项”菜单中的“正在运行的Kubernetes ”旁边看到绿灯时,便会知道Kubernetes已成功启用。

  3. 为了确认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。

  4. 在终端中,导航到创建位置pod.yaml并创建窗格:

    kubectl apply -f pod.yaml
    
  5. 检查您的Pod是否已启动并正在运行:

    kubectl get pods
    

    您应该看到类似以下内容的内容:

    NAME      READY     STATUS    RESTARTS   AGE
    demo      1/1       Running   0          4s
    
  6. 检查您是否获得了执行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
    ...
    
  7. 最后,拆下您的测试吊舱:

    kubectl delete -f pod.yaml
    

视窗

  1. 安装Docker Desktop之后,您应该在系统托盘中看到一个Docker图标。右键单击它,然后浏览设置> Kubernetes

  2. 选中标记为启用Kubernetes的复选框,然后单击“应用并重新启动”。Docker Desktop将自动为您设置Kubernetes。当您在“设置”菜单中的正在运行的Kubernetes ”旁边看到绿灯时,就会知道Kubernetes已成功启用。

  3. 为了确认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。

  4. 在PowerShell中,导航到创建位置pod.yaml并创建pod:

    kubectl apply -f pod.yaml
    
  5. 检查您的Pod是否已启动并正在运行:

    kubectl get pods
    

    您应该看到类似以下内容的内容:

    NAME      READY     STATUS    RESTARTS   AGE
    demo      1/1       Running   0          4s
    
  6. 检查您是否获得了执行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
    ...
    
  7. 最后,拆下您的测试吊舱:

    kubectl delete -f pod.yaml
    

启用Docker Swarm

Docker Desktop主要在Docker Engine上运行,它具有运行Swarm所需的一切内置功能。请按照适用于您的操作系统的设置和验证说明进行操作:

苹果电脑

  1. 打开一个终端,并初始化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.
    
  2. 运行一个简单的Docker服务,该服务使用基于高山的文件系统,并将ping隔离到8.8.8.8:

    docker service create --name demo alpine:3.5 ping 8.8.8.8
    
  3. 检查您的服务是否创建了一个正在运行的容器:

    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
    
  4. 检查您是否获得了执行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
    ...
    
  5. 最后,拆除您的测试服务:

    docker service rm demo
    

视窗

  1. 打开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.
    
  2. 运行一个简单的Docker服务,该服务使用基于高山的文件系统,并将ping隔离到8.8.8.8:

    docker service create --name demo alpine:3.5 ping 8.8.8.8
    
  3. 检查您的服务是否创建了一个正在运行的容器:

    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
    
  4. 检查您是否获得了执行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
    ...
    
  5. 最后,拆除您的测试服务:

    docker service rm demo
    

结论

至此,您已经确认可以在Kubernetes和Swarm中运行简单的容器化工作负载。下一步将是编写Kubernetes yaml,它描述了如何在Kubernetes上运行和管理这些容器。

继续部署到Kubernetes >>

要了解如何编写堆栈文件以帮助您在Swarm上运行和管理容器,请参阅部署到Swarm

CLI参考

有关本文中使用的所有CLI命令的更多文档,请参见:

编排部署kubernetes