推 roccqqck: 試試k3s或rke2 + rancher 11/01 18:13
推 Adama: ubuntu要不要試lxd? 11/01 22:31
→ Adama: 但這文件是lxd v2的,現在已經進展到v4了 11/01 22:32
→ Adama: 1xd可以用proxy來轉發埠通訊 4.18也有network forwards可用 11/01 22:34
目前試出一招使用 docker run socat 作 TCP forwarding:
https://stackoverflow.com/a/42071577/631869
參考指令:
docker run --network kind --rm -p 8080:1234 alpine/socat \
TCP-LISTEN:1234,fork TCP-CONNECT:172.20.0.4:30530
其中 socat 要 run 在 k8s container 同網域的 kind,
而 172.20.0.4:30530 是由 kubectl expose --type NodePort 產生的。
只是我覺得這種解法還不夠漂亮,因為 node port 是隨機選的,
host 一重開機指令就要修改。
又 kubectl port-forward 好似也能解,但它會綁定現有 pods、不會重綁,
一旦 pods 重啟,例如 kubectl scale --replicas=0, 再 --replicas=2,
就無法 forward 至新 pods。
可能是我學藝還不夠,不知道 k8s 此問題的標準解法。
目前正在研究 ingress 跟 load balancer,有一點像是用它們來解!?
推 rog43: 我之前有和你類似狀況 後來是在ubuntu架一個nginx proxy 11/01 23:45
→ rog43: 導過去 11/01 23:45
→ rog43: 但你k8s那邊要弄個service ymal寫好 target port 這樣才不 11/01 23:47
→ rog43: 會依賴node port 11/01 23:47
找到一篇跟我一樣用 socat 解 KIND (k8s in docker) 存取 service 問題:
https://banzaicloud.com/blog/kind-ingress/
謝謝各位建議。我該考慮 k8s on bare metal 會比較好上手。
※ 編輯: zxvc (59.124.69.199 臺灣), 11/02/2021 09:10:21