azure - NodePort 是否适用于 Azure 容器服务 (Kubernetes)

标签 azure kubernetes azure-container-service

我为 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

它适用于 http://localhost:8001/ui

但我也想在集群外访问它。描述输出表明它是使用端口 30177 上的 NodePort 公开的。

但我无法在 http://<any node IP>:30177 上访问它

最佳答案

众所周知,将服务暴露到互联网上,我们可以使用nodeportLoadBalancer

据我所知,Azure 现在支持nodeport类型。

But I want to access it outside the cluster too.

我们可以使用LoadBalancer重新创建kubernetes仪表板,以下是我的步骤:

  1. 通过 kubernetes UI 删除 kubernetes-dashboard:选择命名空间kube-system,然后选择服务强>,然后删除它: enter image description here enter image description here

  2. 修改 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
    
  3. 启动 kubernetes 从 CLI 2.0 浏览:

    C:\Users>az acs kubernetes browser -g k8s -n containerservice-k8s

然后通过 SSH 连接到主虚拟机来检查状态: enter image description here

现在,我们可以通过公共(public)IP地址来浏览UI了:

enter image description here 更新:
下图展示了azure容器服务集群(Kubernetes)的架构,我们应该使用Load-Balancer将服务公开到互联网。

enter image description here

关于azure - NodePort 是否适用于 Azure 容器服务 (Kubernetes),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43423906/

相关文章:

每个应用程序的 Kubernetes 集群?

azure - 如何捕获 cli.azure.cli.core.azclierror : ResourceNotFoundError: in PowerShell

php - 我可以在 Windows Azure 上从 PHP 调用 .NET 函数吗?

kubernetes - 从文件或使用 json 修补 configmap

kubernetes - Spinnaker - 'Create LoadBalancer' 期间出错

docker - 如何使用 docker compose 部署到 google-cloud?

azure - 为在 Azure 应用服务 Linux 上运行的容器创建卷

python - 如何检查以确保 blob_service.put_block_blob_from_path() 在 python 中成功?

Azure DevOps 管道任务等待运行以等待另一个管道完成

azure - 更新 EKS kubernetes 集群代理池配置文件