访问 Azure Stack Hub 中的 Kubernetes 仪表板

注意

仅使用 Kubernetes Azure Stack 市场项将部署群集作为概念证明。 对于 Azure Stack 上支持的 Kubernetes 群集,请使用 AKS 引擎

Kubernetes 包含可用于基本管理操作的 Web 仪表板。 使用此仪表板可以查看应用程序的基本运行状况和指标、创建和部署服务以及编辑现有应用程序。 本文介绍如何在 Azure Stack Hub 上设置 Kubernetes 仪表板。

Kubernetes 仪表板的先决条件

  • Azure Stack Hub Kubernetes 群集:部署到 Azure Stack Hub 的 Kubernetes 群集。 有关详细信息,请参阅 部署 Kubernetes
  • SSH 客户端:用于安全连接到群集中的控制平面节点的 SSH 客户端。 如果使用 Windows,可以使用 PuTTY 。 需要部署 Kubernetes 群集时使用的私钥。
  • FTP (PSCP):支持 SSH 和 SSH 文件传输协议的 FTP 客户端,用于将证书从控制平面节点传输到 Azure Stack Hub 管理计算机。 可以使用 FileZilla。 需要部署 Kubernetes 群集时使用的私钥。

启用仪表板的步骤概述

  1. 从群集中的控制平面节点导出 Kubernetes 证书。
  2. 将证书导入 Azure Stack Hub 管理计算机。
  3. 打开 Kubernetes Web 仪表板。

导出来自主节点的证书

可以从群集中的控制平面节点检索仪表板的 URL。

  1. 从 Azure Stack Hub 仪表板获取主群集的公共 IP 地址和用户名。 若要获取此信息,

    • https://portal.local.azurestack.external/登录到 Azure Stack Hub 门户。
    • 选择所有服务>所有资源。 找到群集资源组中的主节点。 主节点名为 k8s-master-<sequence-of-numbers>
  2. 在门户中打开控制平面节点。 复制 公共 IP 地址。 选择连接,以在使用 VM 本地帐户登录框中获取用户名。 这是在创建群集时设置的相同用户名。 使用公共 IP 地址,而不是连接边栏选项卡中列出的专用 IP 地址。

  3. 打开 SSH 客户端以连接到主群集。 如果使用 Windows,可以使用 Putty 来创建连接。 将公共 IP 地址用于控制平面节点、用户名,并添加在创建群集时使用的私钥。

  4. 当终端连接时,键入 kubectl 打开 Kubernetes 命令行客户端。

  5. 运行以下命令:

    kubectl cluster-info 
    

    找到仪表板的 URL。 例如:https://k8-1258.local.cloudapp.azurestack.external/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

  6. 提取自签名证书并将其转换为 PFX 格式。 运行以下命令:

    sudo su 
    openssl pkcs12 -export -out /etc/kubernetes/certs/client.pfx -inkey /etc/kubernetes/certs/client.key  -in /etc/kubernetes/certs/client.crt -certfile /etc/kubernetes/certs/ca.crt 
    
  7. 获取 kube-system 命名空间中的机密列表。 运行以下命令:

    kubectl -n kube-system get secrets
    

    记下 kubernetes-dashboard-token-<XXXXX> 值。

  8. 获取令牌并将其保存。 将 kubernetes-dashboard-token-<####> 更新为前面步骤中的机密值:

    kubectl -n kube-system describe secret kubernetes-dashboard-token-<####>| awk '$1=="token:"{print $2}' 
    

导入证书

  1. 打开 Filezilla 并连接到控制平面节点。 需要以下信息:

    • 控制平面节点公共 IP
    • 用户名
    • 专用机密
    • 使用 SFTP - SSH 文件传输协议
  2. /etc/kubernetes/certs/client.pfx/etc/kubernetes/certs/ca.crt 复制到 Azure Stack Hub 管理计算机。

  3. 记下文件位置。 使用该位置更新脚本,然后使用权限提升的提示打开 PowerShell。 运行更新后的脚本:

    Import-Certificate -Filepath "ca.crt" -CertStoreLocation cert:\LocalMachine\Root 
    $pfxpwd = Get-Credential -UserName 'Enter password below' -Message 'Enter password below' 
    Import-PfxCertificate -Filepath "client.pfx" -CertStoreLocation cert:\CurrentUser\My -Password $pfxpwd.Password 
    

打开 Kubernetes 仪表板

  1. 在 Web 浏览器中禁用弹出窗口阻止程序。

  2. 将浏览器指向运行命令 kubectl cluster-info时记录的 URL;例如,https://azurestackdomainnamefork8sdashboard/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

  3. 选择客户端证书。

  4. 输入令牌。

  5. 重新连接到控制平面节点上的 bash 命令行,并授予 kubernetes-dashboard的权限。 运行以下命令:

    kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard 
    

    该脚本提供 kubernetes-dashboard 云管理员权限。 有关详细信息,请参阅对于启用了 RBAC 的群集

现在可以使用仪表板。 有关 Kubernetes 仪表板的详细信息,请参阅 Kubernetes Web UI 仪表板

Azure Stack Hub Kubernetes 仪表板

故障 排除

自定义虚拟网络

如果在将 Kubernetes 部署到 自定义虚拟网络后访问 Kubernetes 仪表板时遇到连接问题,请确保目标子网链接到 AKS 引擎创建的路由表和网络安全组资源。

确保网络安全组规则允许控制平面节点与 Kubernetes 仪表板 Pod IP 之间的通信。 可以使用控制平面节点中的 ping 命令来验证此权限。

后续步骤