Orchestration

预计阅读时间:9分钟

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

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

高级模块教您如何:

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

Enable Kubernetes

Docker Desktop 将为您快速轻松地设置 Kubernetes. 按照适用于您的操作系统的设置和验证说明进行操作:

Mac

  1. 安装 Docker Desktop 后,您应该会在菜单栏中看到一个 Docker 图标. 单击它,然后导航到Preferences > Kubernetes .

  2. 选中标记为Enable Kubernetes的复选框,然后单击Apply & Restart . Docker Desktop 会自动为你设置 Kubernetes. 当您在 Preferences 菜单中看到"Kubernetes running "旁边的绿灯时,您将知道 Kubernetes 已成功启用.

  3. 为了确认 Kubernetes 已启动并运行,请创建一个名为pod.yaml的文本文件,其中包含以下内容:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
      - name: testpod
        image: alpine:latest
        command: ["ping", "8.8.8.8"]
    

    这描述了一个带有单个容器的 pod,将简单的 ping 隔离到 8.8.8.8.

  4. 在终端中,导航到您创建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
    

Windows

  1. 安装 Docker Desktop 后,您应该会在系统托盘中看到一个 Docker 图标. 右键单击它,然后导航Settings > Kubernetes .

  2. 选中标记为Enable Kubernetes的复选框,然后单击Apply & Restart . Docker Desktop 会自动为你设置 Kubernetes. 当您在设置菜单中看到"Kubernetes running "旁边的绿灯时,您将知道 Kubernetes 已成功启用.

  3. 为了确认 Kubernetes 已启动并运行,请创建一个名为pod.yaml的文本文件,其中包含以下内容:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
      - name: testpod
        image: alpine:latest
        command: ["ping", "8.8.8.8"]
    

    这描述了一个带有单个容器的 pod,将简单的 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
    

Enable Docker Swarm

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

Mac

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

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

    $ docker service ps demo
    

    您应该会看到如下内容:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:latest       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
    

Windows

  1. Open a powershell, and initialize Docker Swarm mode:

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

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

    $ docker service ps demo
    

    您应该会看到如下内容:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:latest       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
    

Conclusion

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

部署到 Kubernetes >>

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

CLI references

本文中使用的所有 CLI 命令的更多文档可在此处获得:

orchestration, deploy, kubernetes, swarm

by  icopy.site