WEBKT

在树莓派集群上使用 Docker Swarm 或 Kubernetes 部署容器化应用

146 0 0 0

在小型集群中部署容器化应用的需求日益增长,而树莓派因其低廉的价格和强大的功能,成为了构建此类集群的理想选择。本文将探讨如何使用 Docker Swarm 和 Kubernetes 这两种流行的容器编排工具,在多个树莓派上部署和管理容器化应用。

为什么选择 Docker Swarm 或 Kubernetes?

  • 资源管理: 将多个树莓派的资源池化,实现更高效的资源利用。
  • 高可用性: 通过在多个节点上运行应用副本,提高应用的可用性和容错能力。
  • 易于扩展: 可以根据需求动态地扩展集群规模,轻松应对流量增长。
  • 简化部署: 容器化技术简化了应用的部署和管理流程,提高了开发效率。

准备工作

  1. 硬件准备:

    • 至少 3 个树莓派(建议使用 Raspberry Pi 4B,性能更佳)。
    • SD 卡(建议 32GB 或更大)。
    • 电源适配器。
    • 网络连接(有线或无线)。
  2. 操作系统:

    • 在每个树莓派上安装 Raspberry Pi OS(原 Raspbian)。建议使用 Raspberry Pi OS Lite 版本,减少资源占用。
    • 确保操作系统是最新的:sudo apt update && sudo apt upgrade
  3. Docker 安装:

    • 在每个树莓派上安装 Docker:

      curl -fsSL https://get.docker.com -o get-docker.sh
      sudo sh get-docker.sh
      sudo usermod -aG docker pi
      newgrp docker
      
      • 验证 Docker 是否安装成功:docker version

使用 Docker Swarm 部署应用

  1. 初始化 Swarm:

    • 选择一个树莓派作为 manager 节点,执行以下命令:

      docker swarm init --advertise-addr <manager节点的IP地址>
      
    • 该命令会输出加入 worker 节点的命令,例如:

      docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <manager节点的IP地址>:2377
      
  2. 加入 Worker 节点:

    • 在其他树莓派上执行上一步输出的 docker swarm join 命令,将它们加入到 Swarm 集群中。
  3. 部署应用:

    • 创建一个 docker-compose.yml 文件,定义你的应用服务。例如:

      version: "3.7"
      services:
        web:
          image: nginx:latest
          ports:
            - "80:80"
          deploy:
            replicas: 3
            restart_policy:
              condition: on-failure
      
      • 这个例子部署了一个 Nginx 服务,运行 3 个副本,并在容器失败时自动重启。
    • 使用 docker stack deploy 命令部署应用:

      docker stack deploy -c docker-compose.yml myapp
      
      • myapp 是应用的名称,可以自定义。
  4. 管理应用:

    • 查看应用状态:docker stack ps myapp
    • 扩展应用副本数:docker service scale myapp_web=5
    • 更新应用:修改 docker-compose.yml 文件,然后执行 docker stack deploy 命令。

使用 Kubernetes 部署应用

  1. 安装 Kubernetes:

    • 可以使用 kubeadm 工具在树莓派上安装 Kubernetes。由于资源限制,建议使用轻量级的 Kubernetes 发行版,例如 k3s 或 microk8s。

    • 安装 k3s:

      curl -sfL https://get.k3s.io | sh -
      sudo kubectl config use-context default
      
    • 加入 Worker 节点:

      • 在 manager 节点上执行 sudo cat /var/lib/rancher/k3s/server/node-token 获取 token。

      • 在 worker 节点上执行:

        curl -sfL https://get.k3s.io | K3S_URL="https://<manager节点的IP地址>:6443" K3S_TOKEN="<上一步获取的token>" sh -
        
  2. 部署应用:

    • 创建一个 Deployment 和 Service 的 YAML 文件。例如:

      # deployment.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
        labels:
          app: nginx
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: nginx:latest
              ports:
              - containerPort: 80
      
      # service.yaml
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx-service
      spec:
        selector:
          app: nginx
        ports:
          - protocol: TCP
            port: 80
            targetPort: 80
        type: LoadBalancer
      
    • 使用 kubectl apply 命令部署应用:

      kubectl apply -f deployment.yaml
      kubectl apply -f service.yaml
      
  3. 管理应用:

    • 查看应用状态:kubectl get pods
    • 查看 Service:kubectl get service
    • 扩展应用副本数:kubectl scale deployment nginx-deployment --replicas=5
    • 更新应用:修改 YAML 文件,然后执行 kubectl apply 命令。

树莓派集群的注意事项

  • 资源限制: 树莓派的 CPU 和内存资源有限,需要合理规划应用的资源需求。
  • 网络性能: 集群的网络性能会影响应用的性能,建议使用有线连接。
  • 存储: 可以使用 NFS 或其他网络存储方案,为集群提供共享存储。
  • 监控: 建议安装监控工具,例如 Prometheus 和 Grafana,监控集群的资源使用情况和应用的健康状况。

总结

本文介绍了如何使用 Docker Swarm 和 Kubernetes 在树莓派集群上部署和管理容器化应用。选择哪种工具取决于你的需求和经验。Docker Swarm 易于上手,适合小型项目;Kubernetes 功能更强大,适合复杂的应用场景。希望本文能帮助你搭建自己的树莓派集群,并体验容器化技术的优势。

容器玩家 Docker SwarmKubernetesRaspberry Pi

评论点评