[問題] Kubernetes in Docker 存取服務

看板Linux作者 (眾生都是未來佛)時間3年前 (2021/11/01 17:28), 3年前編輯推噓3(306)
留言9則, 3人參與, 3年前最新討論串1/1
我最近在研究 VMWare Tanzu Community Edition, 在 Ubuntu 裝好後發現它是基於 Kubernetes in Docker, 它會新增一個 docker bridge network - kind (如 subnet: 172.20.0.0/16), 且 host 有一個新的 brXYZ interface (IP: 172.20.0.1)。 我用 kubectl apply 啟動 nginx, 再使用 kubectl expose --type NodePort --port 80 (部分指令) 新增1個 k8s service,假設 node port = 33333。 但我發現我無法在 host 使用 curl localhost:33333 或 curl public_ip:33333 存取該 service。 我只能透過 k8s control plane container (如 IP: 172.20.0.4) 存取: curl 172.20.0.4:33333 也就是只能透過上述 brXYZ interface 存取 k8s service。 實際上我想做到的是外部使用者能透過 public IP + port 33333 存取 k8s service, 但查不到相關文件對 k8s in Docker 的標準作法。 我有看過使用 iptables 的解法,但覺得這種作法只適用 Linux host, 不適用 macOS host。所以想請問有沒有更通用的作法? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.222.119.157 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1635758926.A.882.html

11/01 18:13, 3年前 , 1F
試試k3s或rke2 + rancher
11/01 18:13, 1F

11/01 22:31, 3年前 , 2F
ubuntu要不要試lxd?
11/01 22:31, 2F

11/01 22:31, 3年前 , 3F

11/01 22:32, 3年前 , 4F
但這文件是lxd v2的,現在已經進展到v4了
11/01 22:32, 4F

11/01 22:34, 3年前 , 5F
1xd可以用proxy來轉發埠通訊 4.18也有network forwards可用
11/01 22:34, 5F
目前試出一招使用 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,有一點像是用它們來解!?

11/01 23:45, 3年前 , 6F
我之前有和你類似狀況 後來是在ubuntu架一個nginx proxy
11/01 23:45, 6F

11/01 23:45, 3年前 , 7F
導過去
11/01 23:45, 7F

11/01 23:47, 3年前 , 8F
但你k8s那邊要弄個service ymal寫好 target port 這樣才不
11/01 23:47, 8F

11/01 23:47, 3年前 , 9F
會依賴node port
11/01 23:47, 9F
找到一篇跟我一樣用 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
文章代碼(AID): #1XVxDEY2 (Linux)
文章代碼(AID): #1XVxDEY2 (Linux)