WSL2 搭建 Rancher 开发环境

WSL2 搭建 Rancher 开发环境

@author Fu Kai
@since 20211128

Step Preview

一、 安装 WSL2
二、 安装 Rancher-2.5.x
三、 配置容器镜像源
四、 添加主机静态路由
五、helloworld 案例

Preview

Preview

一、安装 WSL2

不多说
service docker start

二、安装 Rancher-2.5.x

安装 docker-compose

这里给出我的 docker-compose

version: "3"
services:
  rancher:
    hostname: rancher
    image: rancher/rancher:v2.5.11
    container_name: rancher-2.5.11
    privileged: true
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /usr/local/rancher/rancher-data:/var/lib/rancher
    ports:
      - "8080:80"
      - "8443:443"
    networks:
      caseor_bridge:
        ipv4_address: 172.172.172.14
networks:
  caseor_bridge:
    driver: bridge
    ipam:
      config:
        - subnet: 172.172.0.0/16
  • 使用 2.5.11 版本,2.6.x 版本比较新,UI 改动较大,截止 20211101 实测存在一些 bug
  • 持久化/var/lib/rancher目录到本机/usr/local/rancher/rancher-data
  • 端口映射8080:80, 8443:443为的是以后保证端口不与rancher/agent端口冲突
  • 自定义网段为172.172.0.0/16网段,固定 rancher 的 ip 为172.172.172.14

启动要耗费一些时间,需要耐心

三、配置容器镜像源

Docker 中安装 Rancher 默认使用的 K3s,K3s 是 K8s 的精简版,底层不是用 docker 而是用的 containerd,配置容器镜像源会和 docker 不同。

进入 rancher 容器
docker exec -it rancher-2.5.11 /bin/bash

vi /etc/rancher/k3s/registries.yaml

mirrors:
  "docker.io":
    endpoint:
      - "https://registry.docker-cn.com"

配置自己的阿里云 docker 镜像或者其它国内镜像

exit 退出 rancher 容器

docker restart rancher-2.5.11 重启 rancher 容器

四、添加主机静态路由

默认情况下每次重启 WSL2 系统都会给 WSL2 重新分配 IP 地址,截止 20211128,WSL2 还不能固定 IP
现在有效的做法可以通过建立网络适配器固定 WSL2 的 IP

新建.bat 文件,写入下面两行后以管理员执行

wsl -d Ubuntu-20.04 -u root ip addr add 192.168.153.129/24 broadcast 192.168.153.255 dev eth0 label eth0:1
netsh interface ip add address "vEthernet (WSL)" 192.168.153.128 255.255.255.0

其中 Ubuntu-20.04 是通过 cmd wsl --list 命令获得(发行版 Unbutu 升级后可能就不是 20.04 了)

主机 cmd 执行ipconfig /all
执行后会在本机虚拟网卡vEthernet (WSL)中增加一个固定 IP192.168.153.128

WSL2 执行ifconfig
在 WSL2 中新增一块虚拟网卡eth0:1拥有固定 IP192.168.153.129

虚拟网卡

上图 IP172.25.32.1不断变化,目前没办法固定,固定的是自定义的192.168.153.128

主机 →WSL2: ping 192.168.153.129
WSL2→ 主机: ping 192.168.153.128

如上配置好后就可以通过 192.168.153.129 访问 WSL2 容器,如果 WSL2 中启动了一个映射 3306 端口的容器,则通过192.168.153.129:3306就可以直接访问到

但访问 Rancher 部署的应用就会有问题

五、rancher/hello-world 案例

hello-world案例

部署好后helloworld0生成了随机端口31928

部署完成

鼠标悬浮在端口号上,发现跳转的 URI 是172.172.172.14:31928

随机端口

WSL2 中访问容器

使用 Docker 部署的 Rancher 会使用 iptables 直接做端口的映射,即在 run 容器的时候不使用-p 指定端口映射也没关系,iptables 会直接映射这些端口
即,此例中helloworld0映射31928端口,我通过172.172.172.14:31928可以在 WSL2 环境直接访问到这个helloworld0

WSL2中访问helloworld

说明使用 Rancher 部署的helloworld0没有问题


主机直接访问容器[1]

在 WSL2 中访问没问题了,那主机访问有没有问题呢?

这里会涉及到网络的知识,172.172.172.14192.168.153.129属于 WSL2 的不同网段,访问192.168.153.129并不能访问到172.172.172.14,属于跨网段,这时需要添加静态路由表自定义路由

首先
在 WSL2 中执行命令iptables -P FORWARD ACCEPT(临时,重启后失效) 允许路由转发
(永久暂不知道如何配置)

然后
在主机管理员 cmd 执行sc start RemoteAccess
然后执行route add -P 172.172.0.0 mask 255.255.0.0 192.168.153.129

主机访问172.172.0.0这个网段的内容,指定下一跳为192.168.153.129,再到 WSL2 中找到172.172.172.14

ping容器

ping 172.172.172.14 可以 ping 通


部署成功

最后从网页访问可以访问到 rancher-helloworld 页面

参考

[1] wsl2 中 docker 内部网络的端口转发. https://www.yht7.com/news/96591

你可能感兴趣的:(WSL2 搭建 Rancher 开发环境)