如何安装和配置 Kubernetes 仪表板

基于网络的 Kubernetes 控制台 是一个提供有关 Kubernetes 集群状态信息的接口。 仪表板还用于部署容器化应用程序以及一般集群资源管理。 传统上,kubectl 主要在终端中用于几乎所有与集群相关的任务。 尽管如此,在用户友好的界面中对我们的集群进行可视化表示还是很有用的。 要安装仪表板,需要在服务器上安装并运行 kubectl。

部署 Kubernetes 仪表板

首先,我们将在终端中使用 kubectl 命令部署 k8s 仪表板。

root@host:~# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml 
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
root@host:~#

导入默认配置

接下来,我们将默认配置下载到我们的服务器。

root@host:~# wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
--2020-10-23 22:41:43-- https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.112.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.112.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7552 (7.4K) [text/plain]
Saving to: 'recommended.yaml'

recommended.yaml 100%[======================>] 7.38K --.-KB/s    in 0s      

2020-10-23 22:41:44 (22.5 MB/s) - 'recommended.yaml' saved [7552/7552]
root@host:~# 

重新配置

我们将用我们刚刚下载的配置文件替换默认配置文件d,编辑它,然后应用我们设置特有的特定更改。

root@host:~# mv recommended.yaml kubernetes-dashboard-deployment.yml
root@host:~#

现在,我们应该编辑配置文件 并输入以下设置。

root@host:~# vim kubernetes-dashboard-deployment.yml
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort

注意:NodePort 设置在静态端口上的每个主机 IP 地址上提供服务。 默认为 ClusterIP,即自动创建 NodePort Service 路由的服务。

最后,使用 :wq vim 中的命令。

应用更改

为了应用我们的更改,我们将使用 kubectl apply 命令来实现我们之前对配置所做的修改。 这有效地锁定了我们的更新,然后将其应用于我们现有的系统。

root@host:~# kubectl apply -f kubernetes-dashboard-deployment.yml
service/kubernetes-dashboard unchanged
serviceaccount/kubernetes-dashboard unchanged
secret/kubernetes-dashboard-certs unchanged
secret/kubernetes-dashboard-csrf unchanged
secret/kubernetes-dashboard-key-holder unchanged
configmap/kubernetes-dashboard-settings unchanged
role.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
deployment.apps/kubernetes-dashboard unchanged
service/dashboard-metrics-scraper unchanged
deployment.apps/dashboard-metrics-scraper unchanged
root@host:~# 

验证状态

现在我们将heck仪表板的创建和部署状态 使用这个命令。

root@host:~# kubectl get deployments -n kubernetes-dashboard
NAME READY UP-TO-DATE AVAILABLE AGE
dashboard-metrics-scraper 1/1 1 1 10m
kubernetes-dashboard 1/1 1 1 10m
root@host:~#

创建模块

接下来,我们将 c创建两个模块; 一个用于仪表板,一个用于指标。 破折号 n (-n) 标志表示命名空间。

root@host:~# kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5997fdc798-7jr2t 1/1 Running 0 11m
kubernetes-dashboard-665f4c5ff-qb7sg 1/1 Running 0 11m
root@host:~#

检查服务

现在我们可以检查我们之前修改的 NodePort 服务。 请注意,kubectl get 命令现在定义了“服务”,其中包括节点端口 IP。

root@host:~# kubectl get services -n kubernetes-dashboard 
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.96.25.69 <none> 8000/TCP 12m
kubernetes-dashboard NodePort 10.98.129.73 <none> 443:30741/TCP 12m
root@host:~#

要使用 Kubernetes Dashboard,我们需要创建一个管理员用户。 这 admin 用户可以修改所有命名空间中的对象并管理集群的任何组件。

创建清单文件

首先,我们将 c创建一个服务帐户清单文件,我们将在其中定义 kube- 的管理用户admin 以及他们有权访问的关联命名空间。

root@host:~# vim admin-sa.yml

接下来,我们添加 将以下信息添加到 Yaml 文件并使用 kubectl 应用 命令。

apiVersion: v1kind: ServiceAccountmetadata:  name: kube-admin  namespace: kube-system

此命令应用特定设置。

root@host:~# kubectl apply -f admin-sa.yml
serviceaccount/kube-admin created
root@host:~# 

接下来,我们将绑定集群-admin 角色 到吨他创建了用户。

root@host:~# vim admin-rbac.yml

在vim中打开文件后,输入以下内容 信息。

apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: kube-adminroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:  - kind: ServiceAccount    name: kube-admin    namespace: kube-system

Save 在 vim 中使用 :wq 命令的文件和将更改应用到文件。

root@host:~# kubectl apply -f admin-rbac.yml
clusterrolebinding.rbac.authorization.k8s.io/kube-admin created
root@host:~#

设置变量

在这一步中,我们存储服务帐户的具体名称。

root@host:~# SA_NAME="kube-admin"

现在我们将为该帐户生成一个令牌。 这对于用户在其他系统、命名空间或集群中的安全和进一步使用是必要的。

root@host:~# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')
Name: kube-admin-token-kz7b8
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: kube-admin
              kubernetes.io/service-account.uid: c25ac94c-b48e-4bb8-8711-c851fdec9272

Type: kubernetes.io/service-account-token

Data
====
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlAwQnJ0a1dldE1IQWpKSjRERzdZckRYVU9jT2o2N0JhUjBtOWI5Q1pBYzQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlLWFkbWluLXRva2VuLWt6N2I4Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Imt1YmUtYWRtaW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjMjVhYzk0Yy1iNDhlLTRiYjgtODcxMS1jODUxZmRlYzkyNzIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06a3ViZS1hZG1pbiJ9.i25cRCwfoK9WKjd9P3rRinRrXnzwkXjfTswFZXZrl9TG3SVOLf4ajgwX8a2VtohVdmkxlt_61ClcbunwFTC-YB0uM6ZT24RPgbQ9Ir7ApbTsR_m7IH_7ElfMuZjCQIXU1wTwmN-vWbqCIwnY0Mz2OptkdA8J_JeahPFJHyjwzBZsKCEVu5xqjPFCQoXRz1whKzuKrjIhRVuV5vp3dc4gV_7vbjaOWfCwscsnPsBvep0DQBcYlMwxxY-OTzH-FjBhRwA2HhofxnmGsx9qlXvYfVwb7oGMZTR0SDGTomb9qcgnP3LjQZDaneN6StGC_02EtDUsh9VrdeOOCV5Tfm5wcQ
ca.crt: 1066 bytes
root@host:~# 

我们会 建议尽可能保持令牌安全。创建令牌后,我们终于可以访问仪表板控制面板了。 复制密钥,因为我们暂时需要它来访问仪表板。

访问仪表板

在访问仪表板之前,需要注意的是,它默认部署了一个最小的 RBAC 配置,并且需要一个 Bearer Token 才能登录。这就是我们上面创建的令牌。 要查找端口和 IP 地址,请运行此命令。

root@host:~# kubectl get service -n kubernetes-dashboard | grep dashboard
dashboard-metrics-scraper ClusterIP 10.96.25.69 <none> 8000/TCP 27m
kubernetes-dashboard NodePort 10.98.129.73 <none> 443:30741/TCP 27m
root@host:~#

在我们的设置中,we 使用的端口 30741, 正如您在上一个命令的第二行输出中看到的那样。 您可以使用此端口登录 在任何服务器上。

我们还可以使用以下 kubectl 命令访问仪表板。

root@host:~# kubectl proxy
Starting to serve on 127.0.0.1:8001

打开浏览器并输入以下网址.

https://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/。

笔记:使用此方法时,只能从执行命令的计算机访问仪表板。

接下来,e输入令牌 在此屏幕上如上所述,然后单击“登入‘ 按钮。

这将打开默认仪表板 看法。

仪表板3

这样就完成了 Kubernetes 仪表板的安装和配置。

部署容器化应用程序

Dashboard 提供了其他好处,例如允许我们使用简单的向导创建和部署容器化应用程序。 您可以手动添加特定的应用信息或上传包含 YAML 或 JSON 格式的应用配置的文件。 点击 ‘创造‘ 任何页面右上角的按钮来启动该过程。

其他特性

  • 导航 – 此视图显示在默认命名空间集群中定义的 Kubernetes 对象。
  • 管理员概述 – 此屏幕列出节点、命名空间和持久卷状态。
  • 工作负载 – 按在所选命名空间中运行的应用程序类型列出工作负载。
  • 服务 – 此视图显示内部或外部公开的资源。
  • 贮存 – 此屏幕视图显示应用程序的 Persistent Volume 资源使用情况。
  • 配置图秘密 – 此视图显示应用配置的集群资源使用情况。 它还允许编辑和配置管理。
  • 日志查看器 – 显示来自单个选定 pod 的日志数据。 下面是日志查看器的屏幕截图。
仪表板4

今天就开始吧!

我们以成为 Hosting™ 中最有帮助的人而自豪!

我们的支持团队由经验丰富的 Linux 技术人员和才华横溢的系统管理员组成,他们对多种网络托管技术有着深入的了解,尤其是本文中讨论的技术。

如果您对此信息有任何疑问,我们将随时为您解答与本文相关问题的任何询问,每天 24 小时、每周 7 天、每年 365 天。

如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私有父服务器, 托管 Cloud 服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话@800.580.4985 联系我们, 聊天,或支持票以帮助您完成此过程。