访问 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 群集时使用的私钥。
启用仪表板的步骤概述
- 从群集中的控制平面节点导出 Kubernetes 证书。
- 将证书导入 Azure Stack Hub 管理计算机。
- 打开 Kubernetes Web 仪表板。
导出来自主节点的证书
可以从群集中的控制平面节点检索仪表板的 URL。
从 Azure Stack Hub 仪表板获取主群集的公共 IP 地址和用户名。 若要获取此信息,
- 在
https://portal.local.azurestack.external/
登录到 Azure Stack Hub 门户。 - 选择所有服务>所有资源。 找到群集资源组中的主节点。 主节点名为
k8s-master-<sequence-of-numbers>
。
- 在
在门户中打开控制平面节点。 复制 公共 IP 地址。 选择连接,以在使用 VM 本地帐户登录框中获取用户名。 这是在创建群集时设置的相同用户名。 使用公共 IP 地址,而不是连接边栏选项卡中列出的专用 IP 地址。
打开 SSH 客户端以连接到主群集。 如果使用 Windows,可以使用 Putty 来创建连接。 将公共 IP 地址用于控制平面节点、用户名,并添加在创建群集时使用的私钥。
当终端连接时,键入
kubectl
打开 Kubernetes 命令行客户端。运行以下命令:
kubectl cluster-info
找到仪表板的 URL。 例如:
https://k8-1258.local.cloudapp.azurestack.external/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
提取自签名证书并将其转换为 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
获取 kube-system 命名空间中的机密列表。 运行以下命令:
kubectl -n kube-system get secrets
记下 kubernetes-dashboard-token-<XXXXX> 值。
获取令牌并将其保存。 将
kubernetes-dashboard-token-<####>
更新为前面步骤中的机密值:kubectl -n kube-system describe secret kubernetes-dashboard-token-<####>| awk '$1=="token:"{print $2}'
导入证书
打开 Filezilla 并连接到控制平面节点。 需要以下信息:
- 控制平面节点公共 IP
- 用户名
- 专用机密
- 使用 SFTP - SSH 文件传输协议
将
/etc/kubernetes/certs/client.pfx
和/etc/kubernetes/certs/ca.crt
复制到 Azure Stack Hub 管理计算机。记下文件位置。 使用该位置更新脚本,然后使用权限提升的提示打开 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 仪表板
在 Web 浏览器中禁用弹出窗口阻止程序。
将浏览器指向运行命令
kubectl cluster-info
时记录的 URL;例如,https://azurestackdomainnamefork8sdashboard/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
。选择客户端证书。
输入令牌。
重新连接到控制平面节点上的 bash 命令行,并授予
kubernetes-dashboard
的权限。 运行以下命令:kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
该脚本提供
kubernetes-dashboard
云管理员权限。 有关详细信息,请参阅对于启用了 RBAC 的群集。
现在可以使用仪表板。 有关 Kubernetes 仪表板的详细信息,请参阅 Kubernetes Web UI 仪表板。
故障 排除
自定义虚拟网络
如果在将 Kubernetes 部署到 自定义虚拟网络后访问 Kubernetes 仪表板时遇到连接问题,请确保目标子网链接到 AKS 引擎创建的路由表和网络安全组资源。
确保网络安全组规则允许控制平面节点与 Kubernetes 仪表板 Pod IP 之间的通信。 可以使用控制平面节点中的 ping
命令来验证此权限。