Kubernetes

在 Kubernetes 中公開服務

  • July 2, 2021

我是 Kubernetes 的新手,我有一些疑問。我已經設置了一個由一個主/節點和一個節點組成的 Kubernetes 集群。我已經部署了一個非常簡單的基於 NodeJS 的應用程序,使用Deployment帶有 2 個副本的 kind。然後,我將它公開為服務kubectl expose deployment my-app --port=80

現在,我的服務看起來像:

root@sw-kubernetes01:~# kubectl get services
NAME             CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
my-app           192.168.100.167   <none>        80/TCP    10m
kubernetes       192.168.100.1     <none>        443/TCP   1h

是否應該我應該訪問我的應用程序導航到http://192.168.100.167:?我收到超時錯誤。否則,如何獲取外部 IP 以在外部訪問服務?

我知道如果我將服務聲明為type: NodePort,我可以使用節點 IP 訪問我的應用程序,不存在自動平衡 pod 之間負載的方法嗎?

如果您在本地集群上工作,您可以使用--type=NodePort

kubectl expose deployment my-app --port=80 --type=NodePort

然後 grep 埠

kubectl get svc my-service -o yaml | grep nodePort

您可以使用集群 ip 和上一個 grep 結果輸出的埠來瀏覽它。

如果您在 GCE、EC2 或 OpenStack 上執行,通常需要一兩分鐘來創建負載均衡器並EXTERNAL_IP填充欄位。該欄位中的 IP 是您應該用來訪問您的服務的 IP。

如果您不在 GCE、EC2 或 OpenStack 上執行,則外部負載均衡器功能對您不起作用,因為 Kubernetes 不知道如何在您的環境中創建一個。

引用自:https://serverfault.com/questions/773200