無法訪問 Kubernetes 集群外的 NodePort 服務 (Cannot access NodePort service outside Kubernetes cluster)


問題描述

無法訪問 Kubernetes 集群外的 NodePort 服務 (Cannot access NodePort service outside Kubernetes cluster)

/code> 是服務暴露的節點端口(通過查看命令 kubectl describe service echoserver 上的字段 NodePort 獲得)</li> </ul>

在瀏覽器上打開 URL 應該會遇到 this 頁面。但是,您將收到一個通用錯誤響應,說明瀏覽器無法訪問該 URL。

使用 netcat 命令發送消息應該會遇到 400 Bad Request 響應,因為它不是正確的格式化的 HTTP 請求。但是,您根本不會得到任何響應,或者 TCP 連接甚至可能一開始就無法建立。

嘗試從集群內部與服務和/或 pod 通信,例如,通過另一個吊艙,完美運行。使用命令 kubectl port‑forward deployment/echoserver 2311:8080 在本地端口轉發部署,然後在瀏覽器中訪問 localhost:2311 或通過 netcat 也可以正常工作(在 WSL 和 Windows 中)。


參考解法

方法 1:

If you want to access it not using localhost you should use your <windows_hosts's_IP:NodePort>.

So having your deployment and service deployed:

$kubectl get svc,deploy
NAME                 TYPE        CLUSTER‑IP     EXTERNAL‑IP   PORT(S)          AGE
service/echoserver   NodePort    10.105.169.2   <none>        8080:31570/TCP   4m12s
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          5m3s

NAME                         READY   UP‑TO‑DATE   AVAILABLE   AGE
deployment.apps/echoserver   1/1     1            1           4m19s

You can either access it by using localhost:31570 or <windows_hosts's_IP:NodePort>.

In my case 192.168.0.29 is my Windows host's IP:

curl.exe 192.168.0.29:31570
CLIENT VALUES:
client_address=192.168.65.3
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://192.168.0.29:8080/

(by Tiago Silvakool)

參考文件

  1. Cannot access NodePort service outside Kubernetes cluster (CC BY‑SA 2.5/3.0/4.0)

#docker-desktop #Kubernetes #windows-subsystem-for-linux #wsl-2 #docker






相關問題

在 Docker 容器中安裝 Windows 服務 (Install Windows service in Docker container)

在不同的用戶下啟動 docker 容器 (Start the docker container under a different user)

如何在 Docker Desktop 上創建新的 Kubernetes 集群? (How to create a new Kubernetes cluster on Docker Desktop?)

連接期間的 Docker for Desktop 錯誤:發布連接嘗試失敗,因為連接方沒有正確 (Docker for Desktop error during connect: Post A connection attempt failed because the connected party did not properly)

Jenkins 昨天安裝成功並在 windows 10 的 docker 桌面上運行,但今天無法在 http://localhost:8080 啟動 jenkins (Jenkins installed successfully and run on docker desktop on windows 10 yesterday , but unable to start jenkins at http://localhost:8080 today)

運行“docker exec”時發布端口 (publish port when running 'docker exec')

無法連接到 docker-desktop kubernetes 中部署的 API?負載均衡器服務不工作 (Unable to connect to the API deployed in docker-desktop kubernetes?. Loadbalancer service not working)

我在哪裡可以看到失敗的 Docker Desktop Windows 安裝的日誌文件? (Where can I see log files for failed Docker Desktop Windows installation?)

如何從 docker-credential-osxkeychain 獲取價值 (How to get value from docker-credential-osxkeychain)

無法訪問 Kubernetes 集群外的 NodePort 服務 (Cannot access NodePort service outside Kubernetes cluster)

如何在 eclipse-che 環境中配置 docker 引擎 (How to configure docker engine inside eclipse-che environment)

如何在 Docker Desktop 中使用參數運行 docker 實例? (How to run a docker instance with params in Docker Desktop?)







留言討論