V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
panisertoller
V2EX  ›  Docker

腾讯云 Lighthouse 服务器 Docker 容器跨主机通信

  •  
  •   panisertoller · 9 天前 · 931 次点击

    之前一直在向大家介绍基于 k3s 实现的腾讯云 Lighthouse 集群使用方法,也有声音表示 k8s 太重了,能不能更轻量一些?答案当然是:可以!

    今天,本文将探讨如何利用腾讯云 Lighthouse 服务器,在 Docker 应用镜像上创建一个 Swarm 集群的,并实现容器跨主机通信的能力。

    概念解析

    Swarm 是 Docker 官方提供的容器编排工具之一,用于管理多个 Docker 主机上运行的容器。它允许将多个 Docker 主机组成一个集群,并通过统一的接口来管理这些主机上的容器。Swarm 提供了高可用性、伸缩性和容错性,使得在生产环境中部署和管理容器化应用变得更加简单和可靠。

    Overlay 网络是 Docker 提供的一种网络模型,采用了多种技术来实现容器间的通信,其中包括了本文中将使用的 VXLAN ( Virtual Extensible LAN )技术,VXLAN 可以将容器的数据包封装在 UDP 数据包中,并在底层网络中传输,从而实现跨主机的容器通信。

    环境配置

    节点名 节点 IP 节点服务
    dnode0 10.0.0.11 重装为 Docker 应用镜像, 并初始化 Swarm 集群
    dnode1 10.0.0.12 重装为 Docker 应用镜像
    dnode2 10.0.0.13 重装为 Docker 应用镜像

    在配置过程中,请确保将每个节点的hostname设置为不同的值,本例分别设置为 dnode0 、dnode1 、dnode2 ,并放行防火墙所需的端口:

    • TCP 端口 2376:用于安全的 Docker 客户端通信,这对于 Docker Machine (用于编排 Docker 的主机)的正常运行是必需的。
    • TCP 端口 2377:用于 Docker Swarm 或集群中节点之间的通信,只需要在管理节点上打开。
    • UDP 端口 4789:用于覆盖网络流量(容器入口网络)。
    • TCP 和 UDP 端口 7946:用于节点之间的通信(容器网络发现)。

    初始化Swarm集群服务

    dnode0节点上执行以下命令来初始化 Swarm 集群:

    docker swarm init
    

    如果没有记住加入集群的token,可以通过以下命令重新获取:

    docker swarm join-token worker
    

    其他节点分别加入Swarm集群

    在其他节点上执行加入 Swarm 集群的命令。假设已经获得了加入集群的token,然后在各节点上执行如下命令:

    docker swarm join --token SWMTKN-1-tokenxxxxxxx 10.0.0.11:2377
    

    确保将token替换为实际获得的值,并将 IP 地址替换为 dnode0 节点的 IP 地址。

    在节点上创建网络

    在 Swarm 集群中,可以创建 overlay 网络以实现容器间的跨主机通信。在主节点上执行以下命令:

    docker network create --driver overlay --subnet=172.22.0.0/24 --gateway=172.22.0.1 --attachable ovnet
    

    这将创建一个名为ovnet的 overlay 网络,其中包括了一个子网范围为172.22.0.0/24,并指定网关为172.22.0.1

    测试跨主机网络连通性

    在各个节点上创建容器,这些容器可以在 overlay 网络上互相通信。在各节点上执行如下命令:

    docker run -it --rm --network ovnet --ip 172.22.0.5 alpine
    docker run -it --rm --network ovnet --ip 172.22.0.6 alpine
    docker run -it --rm --network ovnet --ip 172.22.0.7 alpine
    

    这些命令将分别在 overlay 网络上创建了三个容器,它们分别具有 IP 地址为172.22.0.5172.22.0.6172.22.0.7,并且它们可以在 Swarm 集群中的不同节点上互相通信。

    文章思路来自 若海の技术写真,有问题请留言。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2498 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:49 · PVG 22:49 · LAX 07:49 · JFK 10:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.