如何安装和配置 Kubernetes 仪表板

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

部署 Kubernetes 仪表板

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

[email protected]:~# 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 [email protected]:~#

导入默认配置

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

[email protected]:~# 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] [email protected]:~# 

重新配置

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

[email protected]:~# mv recommended.yaml kubernetes-dashboard-deployment.yml [email protected]:~#

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

[email protected]:~# 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 服务路由。

最后,使用保存并退出文件 :wq vim 中的命令。

应用更改

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

[email protected]:~# 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 [email protected]:~# 

验证状态

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

[email protected]:~# 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 [email protected]:~#

创建模块

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

[email protected]:~# 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 [email protected]:~#

检查服务

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

[email protected]:~# 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 [email protected]:~#

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

创建清单文件

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

[email protected]:~# vim admin-sa.yml

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

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

此命令应用特定设置。

[email protected]:~# kubectl apply -f admin-sa.yml serviceaccount/kube-admin created [email protected]:~# 

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

[email protected]:~# 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 命令的文件和一个将更改应用到文件。

[email protected]:~# kubectl apply -f admin-rbac.yml clusterrolebinding.rbac.authorization.k8s.io/kube-admin created [email protected]:~#

设置变量

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

[email protected]:~# SA_NAME="kube-admin"

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

[email protected]:~# 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 [email protected]:~# 

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

访问仪表板

在访问dashboard之前,需要注意的是,它默认部署了一个最小的RBAC配置,需要一个Bearer Token来登录,这就是我们上面创建的token。 要定位端口和 IP 地址,请运行此命令。

[email protected]:~# 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 [email protected]:~#

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

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

[email protected]:~# 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 仪表板的安装和配置。

部署容器化应用程序

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

其他特性

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

今天就开始吧!

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