温馨提示×

CentOS Overlay如何进行容器编排

小樊
36
2025-12-27 11:27:30
栏目: 智能运维

CentOS 上的 Overlay 容器编排实践

CentOS 环境中,Overlay 通常指跨主机的虚拟网络,用于让分布在不同节点上的容器像在同一局域网内通信。编排上常用两条路线:基于 Docker Swarm 的原生 Overlay 网络,或基于 KubernetesCNI 插件(如 Calico/Flannel)提供的 Overlay 网络能力。

方案一 Docker Swarm 编排 Overlay 网络

  • 准备与初始化
    • 在所有节点安装 Docker,并启动服务:
      • 安装:sudo yum install -y docker
      • 启动与开机自启:sudo systemctl start docker && sudo systemctl enable docker
    • 在主节点初始化 Swarm,工作节点加入:
      • 初始化:docker swarm init
      • 加入:在其他节点执行 docker swarm join --token <MANAGER_IP>:<MANAGER_PORT>
  • 创建可用的 Overlay 网络
    • 创建跨主机网络(建议加上 –attachable,便于非 Swarm 服务/容器接入):
      • docker network create --driver overlay --attachable --subnet 10.0.0.0/24 --gateway 10.0.0.1 my_overlay_network
  • 编排与验证
    • 部署服务(示例):docker service create --name web --network my_overlay_network -p 80:80 nginx
    • 跨主机验证:进入某容器 ping 另一个容器名或 IP,确认 跨主机连通性 正常。

方案二 Kubernetes 编排 Overlay 网络

  • 集群与网络插件
    • 安装 kubelet/kubeadm/kubectl,初始化集群(示例):sudo kubeadm init
    • 部署 CNI 插件 提供 Overlay(二选一或按场景选择):
      • Calico:kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
      • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • 等待 CNI Pod 就绪:kubectl get pods -n kube-system
  • 编排与验证
    • 部署示例应用(Deployment + Service):
      • 创建文件 app.yaml
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: nginx-deployment
        spec:
          replicas: 2
          selector:
            matchLabels:
              app: nginx
          template:
            metadata:
              labels:
                app: nginx
            spec:
              containers:
              - name: nginx
                image: nginx:latest
                ports:
                - containerPort: 80
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: nginx-service
        spec:
          selector:
            app: nginx
          ports:
          - protocol: TCP
            port: 80
            targetPort: 80
          type: ClusterIP
        
      • 应用:kubectl apply -f app.yaml
    • 验证:查看 Pod 就绪与 Service 分配;进入 Pod 内部访问 ClusterIP 或测试 Pod 间 PodIP 连通性。

关键注意事项与优化

  • 明确网络目标:需要跨主机互联与多租隔离时选 Overlay;极致网络性能与低开销时可考虑 HostPort/HostNetwork 或 Underlay 方案(权衡运维复杂度与安全性)。
  • 规划网段与网关:示例子网 10.0.0.0/24、网关 10.0.0.1,请与现有网络无冲突;Kubernetes 中由 CNI IPAM 分配,避免与宿主机/物理网络重叠。
  • 性能与稳定性
    • 存储层建议启用 overlay2(如 Docker 使用 OverlayFS 作为存储驱动),减少层数、合理挂载选项有助于性能。
    • 集群规模扩大时,按插件文档调整 MTU、节点间加密、健康检查与节点亲和/污点 等参数,保障扩展性与稳定性。

0