Kubernetes
在 Kubernetes 中公開服務
我是 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 不知道如何在您的環境中創建一個。