WSL2 搭建 Rancher 开发环境
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSL2 搭建 Rancher 开发环境相关的知识,希望对你有一定的参考价值。
参考技术A @author Fu Kai@since 20211128
一、 安装 WSL2
二、 安装 Rancher-2.5.x
三、 配置容器镜像源
四、 添加主机静态路由
五、helloworld 案例
不多说
service docker start
安装 docker-compose
这里给出我的 docker-compose
启动要耗费一些时间,需要耐心
Docker 中安装 Rancher 默认使用的 K3s,K3s 是 K8s 的精简版,底层不是用 docker 而是用的 containerd,配置容器镜像源会和 docker 不同。
进入 rancher 容器
docker exec -it rancher-2.5.11 /bin/bash
vi /etc/rancher/k3s/registries.yaml
配置自己的阿里云 docker 镜像或者其它国内镜像
exit 退出 rancher 容器
docker restart rancher-2.5.11 重启 rancher 容器
默认情况下每次重启 WSL2 系统都会给 WSL2 重新分配 IP 地址,截止 20211128,WSL2 还不能固定 IP
现在有效的做法可以通过建立网络适配器固定 WSL2 的 IP
新建.bat 文件,写入下面两行后以 管理员 执行
其中 Ubuntu-20.04 是通过 cmd wsl --list 命令获得(发行版 Unbutu 升级后可能就不是 20.04 了)
主机 cmd 执行 ipconfig /all
执行后会在本机虚拟网卡 vEthernet (WSL) 中增加一个固定 IP 192.168.153.128
WSL2 执行 ifconfig
在 WSL2 中新增一块虚拟网卡 eth0:1 拥有固定 IP 192.168.153.129
上图 IP 172.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 部署的应用就会有问题
部署好后 helloworld0 生成了随机端口 31928
鼠标悬浮在端口号上,发现跳转的 URI 是 172.172.172.14:31928
使用 Docker 部署的 Rancher 会使用 iptables 直接做端口的映射,即在 run 容器的时候不使用-p 指定端口映射也没关系,iptables 会直接映射这些端口
即,此例中 helloworld0 映射 31928 端口,我通过 172.172.172.14:31928 可以在 WSL2 环境直接访问到这个 helloworld0
说明使用 Rancher 部署的 helloworld0 没有问题
在 WSL2 中访问没问题了,那主机访问有没有问题呢?
这里会涉及到网络的知识, 172.172.172.14 与 192.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 172.172.172.14 可以 ping 通
最后从网页访问可以访问到 rancher-helloworld 页面
[1] wsl2 中 docker 内部网络的端口转发. https://www.yht7.com/news/96591
以上是关于WSL2 搭建 Rancher 开发环境的主要内容,如果未能解决你的问题,请参考以下文章
windows 11 搭建 TensorFlow GPU 开发环境RTX 3060:2 -- 基于WSL2 docker 方式的使用