K8S组件-----图形化web界面Dashboard搭建安装,让k8s管理更简单

Posted the丶only

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S组件-----图形化web界面Dashboard搭建安装,让k8s管理更简单相关的知识,希望对你有一定的参考价值。

一:Dashboard简介

Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。

Dashboard 同时展示了 Kubernetes 集群中的资源状态信息和所有报错信息。

下载及相关说明可查看
官方地址:https://github.com/kubernetes/dashboard

本机环境
master IP:192.168.152.100



二:Dashboard下载安装

在master主节点上命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

此时已自动创建kubernetes-dashboard的命名空间,以前版本是在默认的kube-system命名空间中。
可自行查看kubernetes-dashboard空间的服务,已存在kubernetes-dashboard。

ubuntu@k8s-master:~$ kubectl get svc --namespace=kubernetes-dashboard 
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.101.45.252   <none>        8000/TCP   10m
kubernetes-dashboard        ClusterIP   10.106.68.110   <none>        443/TCP    10m


三:访问Dashboard

访问权限官方参考地址:https://github.com/kubernetes/dashboard/blob/master/docs/user/accessing-dashboard/README.md#login-not-available

Dashboard登录连接有以下三种,本机的http方式访问,外部机器的https访问。

  • http://localhost/…
  • http://127.0.0.1/…
  • https://<domain_name>/…

非以上连接登录,页面都会出现以下提示,而无法登录。
检测到不安全的访问。无法登陆。通过 HTTPS 或使用 localhost 安全访问 Dashboard

1、本机器访问

master机器输入命令,此时命令为挂起状态

kubectl proxy

在本机浏览器输入(注意必须是 http),对,没错就是这么长的连接:

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

2、外部机器访问

方法一:端口转发模式:
监听所有IP地址,并将8080转发至443https端口访问。

kubectl port-forward -n kubernetes-dashboard --address 0.0.0.0 service/kubernetes-dashboard 8080:443

这时在外部机器浏览器输入,(注意必须是 https),对,没错就是这么短的连接即可访问:

https://192.168.152.100:8080/

方法二:NodePort:
编辑命令空间kubernetes-dashboard中的kubernetes-dashboard服务

kubectl -n kubernetes-dashboard edit service kubernetes-dashboard

打开后,将type: ClusterIP 改为 type: NodePort

apiVersion: v1
kind: Service
...
...
  ports:
  - nodePort: 30169
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: NodePort	#修改这一行即可,原为type: ClusterIP
status:
  loadBalancer: 

重新查看命令空间kubernetes-dashboard中的kubernetes-dashboard服务的端口地址。

kubectl -n kubernetes-dashboard get service kubernetes-dashboard

显示如下,外部暴露端口自动为30169

ubuntu@k8s-master:~$ kubectl -n kubernetes-dashboard get service kubernetes-dashboard
NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   10.106.68.110   <none>        443:30169/TCP   112m

这时在外部机器浏览器输入IP加30169,(注意必须是 https)即可访问:

https://192.168.152.100:30169/

方法三:API Server:

注:这种方法仅适用于在浏览器中安装用户证书时才可用,可自行研究,这里不深究了。
如果没有安装证书,显示“检测到不安全的访问。无法登陆。通过 HTTPS 或使用 localhost 安全访问 Dashboard”

设置API server接收所有主机的请求:

kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$'

浏览器访问命令为:

https://<master-ip>:<apiserver-port>/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/


四:配置登录权限

Dashboard 支持 Kubeconfig 和 Token 两种认证方式,这里用token的方式登录。
官方用户配置地址:https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
通过yaml文件创建服务用户Service Account,和集群角色权限ClusterRoleBinding

sudo vim  account.yaml 

内容

# Creating a Service Account
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---
# Creating a ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

kubectl apply使之生效,生成角色

kubectl apply -f account.yaml 

获取token

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath=".secrets[0].name") -o go-template=".data.token | base64decode"

本机获取token类似如下:

eyJhbGciOiJSUzI1NiIsImtpZCI6IlVMZ0sxSjFwRGVodFdkSnAyWkc0WHJVRUZEX0h6dlF0Mm12Z29UbnZlakUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXh6emd0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJhMDczMzE2Ny05ZGViLTQ4N2EtYjFmMi1hMDljYTVlYmNhMDUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.kSl89EDfsJssCVh3PEiK4E0mH5zRkzy2CbVhsmGYv9XRDUsyaUhO2R4lYJ2K4PKfisnHRuHKPoLaPabDH5qvCX0Jw5f75YDwXua8edH7hqd3NfmAxjX3ipqTBR7z7vV8kI6qrfqstA2KV1SQ4R_n-iH6JAsQQYq8YjoLP6sNLmzwKBpbjUhuvFZw3pFSaf02MiHR_8pD0_MHYpjvIFUBSdVf5-YPn7qM6CWSqUp5vo6cYWUT63dokiWLw7hwwj4QXQbRc1qPmli9uFV3yUE9s_JJv5WelEdAwRlv5Aic5QzGd_N3-u67fBL_cvivbODKxK14TXLLznOqy_kasOrmHg

将得到的token填入页面登录地址

登录成功,Dashboard配置完成

以上是关于K8S组件-----图形化web界面Dashboard搭建安装,让k8s管理更简单的主要内容,如果未能解决你的问题,请参考以下文章

k8s 集群居然可以图形化安装了?

如何使用图形化工具远程管理 Linux 上的 MySQL

图形化用户界面

GUI图形化界面java实现

Java图形化用户界面(GUI)笔记介绍

有没有iptables的图形化管理工具