⑴ WSL2 搭建 Rancher 開發環境
@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