我为 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>
根据documentation ,我跑了
az acs kubernetes browse
但我也想在集群外访问它。描述输出表明它是使用端口 30177 上的 NodePort 公开的。
但我无法在 http://<any node IP>:30177
上访问它
最佳答案
众所周知,将服务暴露到互联网上,我们可以使用nodeport
和LoadBalancer
。
据我所知,Azure 现在不支持nodeport类型。
But I want to access it outside the cluster too.
我们可以使用LoadBalancer
重新创建kubernetes仪表板,以下是我的步骤:
通过 kubernetes UI 删除 kubernetes-dashboard:选择命名空间到kube-system,然后选择服务强>,然后删除它:
修改 Kubernetes-dashboard-service.yaml:SSH 主虚拟机,然后将类型从节点端口更改为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
启动 kubernetes 从 CLI 2.0 浏览:
C:\Users>
az acs kubernetes browser -g k8s -n containerservice-k8s
现在,我们可以通过公共(public)IP地址来浏览UI了:
更新:
下图展示了azure容器服务集群(Kubernetes)的架构,我们应该使用Load-Balancer将服务公开到互联网。
关于azure - NodePort 是否适用于 Azure 容器服务 (Kubernetes),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43423906/