小結(jié)
我在WSL(Windows Subsystem for Linux)安裝了Minikube中并設(shè)置好了Kubernetes環(huán)境。在Kubernetes環(huán)境中配置好微服務(wù)后,從局域網(wǎng)中的另一臺(tái)主機(jī)無法訪問WSL中的MiniKube生成的微服務(wù),通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)解決了這個(gè)問題。
問題
設(shè)置Minikube可參考How to Install Minikube on Ubuntu 22.04 / 20.04,驗(yàn)證在WSL(Windows Subsystem for Linux)是沒有任何問題的。
這里有一個(gè)問題對后面在局域網(wǎng)中的另一臺(tái)主機(jī)如何訪問WSL中的MiniKube生成的微服務(wù)造成麻煩,因?yàn)檫@里DOCKER_HOST
被設(shè)置成了127.0.0.1
,本機(jī)訪問這個(gè)回環(huán)地址是沒有問題,那么在局域網(wǎng)中的另一臺(tái)主機(jī)如何訪問呢?
john@LAPTOP-XXYYZZ:~$ minikube docker-env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://127.0.0.1:53167"
export DOCKER_CERT_PATH="/home/john/.minikube/certs"
export MINIKUBE_ACTIVE_DOCKERD="minikube"
如下路由是無法從另外一臺(tái)主機(jī)訪問到的:
john@LAPTOP-XXYYZZ:~$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-service LoadBalancer 10.102.81.61 127.0.0.1 80:30699/TCP 19h
這里使用到了Kong和Minikube tunnel
john@LAPTOP-XXYYZZ:~$ kubectl -n kong get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kong-proxy LoadBalancer 10.109.94.249 127.0.0.1 80:30446/TCP,443:31224/TCP 25h
kong-validation-webhook ClusterIP 10.104.169.231 <none> 443/TCP 25h
john@LAPTOP-XXYYZZ:~$
使用以下指令啟動(dòng)minikube tunnel
john@LAPTOP-XXYYZZ:~$ minikube tunnel
不知為何,DOCKER_HOST沒有設(shè)置成eth0, 以下這個(gè)eth0地址172.31.170.141
可以從本地主機(jī)訪問,但是每次主機(jī)重啟后,有可能是因?yàn)檫@個(gè)地址是動(dòng)態(tài)變化的。
john@LAPTOP-XXYYZZ:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.170.141 netmask 255.255.240.0 broadcast 172.31.175.255
inet6 fe80::215:5dff:fe1b:3ec5 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:1b:3e:c5 txqueuelen 1000 (Ethernet)
RX packets 10497870 bytes 1870201808 (1.8 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 672122 bytes 54296608 (54.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 126517780 bytes 20016489328 (20.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 126517780 bytes 20016489328 (20.0 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
解決
參考Stackoverflow: Connecting to WSL2 server via local network [closed]
使用以下兩條指令(注意是在Windows中):
netsh advfirewall firewall add rule name="Allowing LAN connections" dir=in action=allow protocol=TCP localport=5000
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5000 connectaddress=localhost connectport=80
以上第一條指令在本機(jī)開通了一個(gè)端口5000,這樣可以通過局域網(wǎng)中的另一臺(tái)主機(jī)訪問這個(gè)端口5000。第二條指令,端口5000的流量被轉(zhuǎn)發(fā)到WSL中的服務(wù)端口80。
也就是,以上test-service
這個(gè)微服務(wù)是在Kubernetes中使用端口80, 在局域網(wǎng)中的另一臺(tái)主機(jī)訪問本地主機(jī)的5000端口,這個(gè)流量就被轉(zhuǎn)發(fā)到WSL中的MiniKube生成的微服務(wù)的80端口。文章來源:http://www.zghlxwxcb.cn/news/detail-660273.html
參考
https://kubernetes.io: Ingress Controllers
Minikube K8S FAQ
How to Install Minikube on Ubuntu 22.04 / 20.04
Stackoverflow: Connecting to WSL2 server via local network [closed]文章來源地址http://www.zghlxwxcb.cn/news/detail-660273.html
到了這里,關(guān)于在局域網(wǎng)中的另一臺(tái)主機(jī)如何訪問WSL中的MiniKube生成的微服務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!