[英]Does NodePort work on Azure Container Service (Kubernetes)
我為 Kubernetes 儀表板提供了以下服務
Name: kubernetes-dashboard
Namespace: kube-system
Labels: k8s-app=kubernetes-dashboard
kubernetes.io/cluster-service=true
Annotations: kubectl.kubernetes.io/last-applied-configuration={"kind":"Service","apiVersion":"v1","metadata":{"name":"kubernetes-dashboard","namespace":"kube-system","creationTimestamp":null,"labels":{"k8s-app":"k...
Selector: k8s-app=kubernetes-dashboard
Type: NodePort
IP: 10.0.106.144
Port: <unset> 80/TCP
NodePort: <unset> 30177/TCP
Endpoints: 10.244.0.11:9090
Session Affinity: None
Events: <none>
根據文檔,我跑了
az acs kubernetes browse
但我也想在集群外訪問它。 描述輸出表明它是在端口 30177 上使用 NodePort 公開的。
但我無法在http://<any node IP>:30177
上訪問它
眾所周知,將服務暴露給互聯網,我們可以使用nodeport
和LoadBalancer
。
據我所知,Azure 現在不支持 nodeport 類型。
但我也想在集群外訪問它。
我們可以使用LoadBalancer
重新創建 kubernetes 儀表板,這是我的步驟:
通過 kubernetes UI刪除kubernetes-dashboard:選擇Namespace to kube-system ,然后選擇services ,然后刪除它:
修改 Kubernetes-dashboard-service.yaml: SSH master VM,然后將type 從 nodeport更改為LoadBalancer :
root@k8s-master-47CAB7F6-0:/etc/kubernetes/addons# vi kubernetes-dashboard-service.yaml
apiVersion: v1 kind: Service metadata: labels: kubernetes.io/cluster-service: "true" k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system spec: ports: - port: 80 targetPort: 9090 selector: k8s-app: kubernetes-dashboard type: LoadBalancer
從 CLI 2.0啟動kubernetes 瀏覽:
C:\\Users> az acs kubernetes browse -g k8s -n containerservice-k8s
現在,我們可以通過公共 IP 地址來瀏覽 UI:
更新:
下圖顯示了 azure 容器服務集群(Kubernetes)的架構,我們應該使用 Load-Balancer 將服務暴露給互聯網。
再想一想,這實際上是行不通的。 默認情況下,集群中唯一的公共 IP 用於主服務器上的負載均衡器。 並且該負載均衡器顯然沒有配置為轉發隨機端口(例如 30000-32767)。 此外,沒有一個節點直接擁有公共 IP,因此根據定義,NodePort 不會在集群外部工作。
您要完成這項工作的唯一方法是直接為節點提供公共 IP 地址。 出於各種原因,不鼓勵這樣做。
如果你只是想避免等待......那么我建議:
不要刪除服務。 大多數開發場景應該只是kubectl apply -f <directory>
在這種情況下你真的不需要等待服務重新配置
將 Ingress 與 'nginx-ingress-controller' 一起使用,這樣您只需等待一次完整的 LB+NSG+PublicIP 配置,然后就可以在您的開發場景中添加/刪除 Ingress 對象。
開發場景使用minikube,或者手動給節點添加公網ip,讓NodePort場景工作。
您無法通過運行 kubectl Expose 命令通過 nodeport 公開服務,您會獲得集群所在子網范圍之外的 VIP 地址...相反,通過 yaml 文件部署服務,您可以指定內部負載平衡器作為一種類型...,它將為您提供主子網上的本地 IP,您可以通過內部網絡連接到該 IP...
或者,您可以使用外部負載均衡器公開服務並獲得公共 IP。 可在 www.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.