3. 死磕 k8s系列之安装k8s仪表盘(Dashboard)

  • 2020 年 2 月 10 日
  • 筆記

题外话

前面两集单词写错了,正确的写法是 kubernetes,在此表示歉意。

kubernetes为什么缩写为k8s呢?

从读音还以为是国人发明的呢,其实不是。真正的原因是kubernetes太长了,老外也容易拼错,所以就省略了中间8个字母以 8 代替,就变成了k8s

其实,老外经常这么干,像我们熟悉的 i18n,实际上是internationalization(国际化)的缩写,这次是彤哥一次性拼出来的,不知道有没有错呢

教大家一招记单词的诀窍:

nation:国家,民族;

inter:跨……;internation:跨国,即国际的意思;

al:形容词后缀;international:国际的的意思;

ize:动词后缀,表使动;internationalize:使……成为国际的的意思,即使国际化

ation:名词后缀;internationalization:国际化的意思;

ed:形容词后缀或过去式或过去分词或表被动;internationalized:国际化的的意思;

如果以上见解跟你在学校学的不一样,请以我为准,如果你想知道为什么我是对的,加我微信我会告诉你的。

以后我要是不当程序员了,我就去教别人背单词,哈哈。

扯远了,进入本节内容。

注:本文基于k8s集群v1.16.2版本。

注:如无特殊说明,以下所有操作都是在master节点上执行。

简介

上一章我们一起安装了k8s集群,本章我们一起安装一个Dashboard——kuboard,用于直观地查看k8s集群的各项指标,管理各个组件。

前提

Kuboard 是基于一款基于 Kubernetes 的微服务管理面板。安装 Kuboard 时,假设您已经有一个 Kubernetes 集群,如果没有集群,请参考上一章先安装k8s集群。

安装kuboard

如果是按照上一章介绍的方法安装的k8s集群,可以使用如下命令安装kuboard:

kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml

你也可以下载下来这个文件去查看里面的配置。

apiVersion: apps/v1  kind: Deployment  metadata:    name: kuboard    namespace: kube-system    annotations:      k8s.eip.work/displayName: kuboard      k8s.eip.work/ingress: "true"      k8s.eip.work/service: NodePort      k8s.eip.work/workload: kuboard    labels:      k8s.eip.work/layer: monitor      k8s.eip.work/name: kuboard  spec:    replicas: 1    selector:      matchLabels:        k8s.eip.work/layer: monitor        k8s.eip.work/name: kuboard    template:      metadata:        labels:          k8s.eip.work/layer: monitor          k8s.eip.work/name: kuboard      spec:        containers:        - name: kuboard          image: eipwork/kuboard:latest          imagePullPolicy: Always        tolerations:        - key: node-role.kubernetes.io/master          effect: NoSchedule    ---  apiVersion: v1  kind: Service  metadata:    name: kuboard    namespace: kube-system  spec:    type: NodePort    ports:    - name: http      port: 80      targetPort: 80      nodePort: 32567    selector:      k8s.eip.work/layer: monitor      k8s.eip.work/name: kuboard    ---  apiVersion: v1  kind: ServiceAccount  metadata:    name: kuboard-user    namespace: kube-system    ---  apiVersion: rbac.authorization.k8s.io/v1  kind: ClusterRoleBinding  metadata:    name: kuboard-user  roleRef:    apiGroup: rbac.authorization.k8s.io    kind: ClusterRole    name: cluster-admin  subjects:  - kind: ServiceAccount    name: kuboard-user    namespace: kube-system    ---  apiVersion: v1  kind: ServiceAccount  metadata:    name: kuboard-viewer    namespace: kube-system    ---  apiVersion: rbac.authorization.k8s.io/v1  kind: ClusterRoleBinding  metadata:    name: kuboard-viewer  roleRef:    apiGroup: rbac.authorization.k8s.io    kind: ClusterRole    name: view  subjects:  - kind: ServiceAccount    name: kuboard-viewer    namespace: kube-system    ---  apiVersion: rbac.authorization.k8s.io/v1  kind: ClusterRoleBinding  metadata:    name: kuboard-viewer-node  roleRef:    apiGroup: rbac.authorization.k8s.io    kind: ClusterRole    name: system:node  subjects:  - kind: ServiceAccount    name: kuboard-viewer    namespace: kube-system    ---  apiVersion: rbac.authorization.k8s.io/v1  kind: ClusterRoleBinding  metadata:    name: kuboard-viewer-pvp  roleRef:    apiGroup: rbac.authorization.k8s.io    kind: ClusterRole    name: system:persistent-volume-provisioner  subjects:  - kind: ServiceAccount    name: kuboard-viewer    namespace: kube-system    ---  apiVersion: extensions/v1beta1  kind: Ingress  metadata:    name: kuboard    namespace: kube-system    annotations:      nginx.org/websocket-services: "kuboard"      nginx.com/sticky-cookie-services: "serviceName=kuboard srv_id expires=1h path=/"  spec:    rules:    - host: kuboard.yourdomain.com      http:        paths:        - path: /          backend:            serviceName: kuboard            servicePort: http

卸载也很简单,执行以下命令即可:

kubectl delete -f https://kuboard.cn/install-script/kuboard.yaml

获取token

kuboard的登录需要一个token,按照权限的不同可以获取管理员和只读用户的token,分别执行以下命令获取:

# 在第一个 Master 节点上执行此命令  # 管理员token  kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')    # 普通用户token  kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}')

我们这里以获取管理员token为示例,输出结果为:

[root@instance-ji0xk9uh-1 ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')  Name:         kuboard-user-token-ldx9g  Namespace:    kube-system  Labels:       <none>  Annotations:  kubernetes.io/service-account.name: kuboard-user                kubernetes.io/service-account.uid: c767deff-72c9-462d-80fb-669ad22037f8    Type:  kubernetes.io/service-account-token    Data  ====  namespace:  11 bytes  token:      eyJhbGciOiJSUzI1NiIsImtpZCI6Ik9OZF9oM3BqR1psaUZzNElrVjJuYWVySEFKdlExYXF0d0VRZWlqUTJ1eGMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tbGR4OWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYzc2N2RlZmYtNzJjOS00NjJkLTgwZmItNjY5YWQyMjAzN2Y4Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.lmV9-R1ps7MTfrc-k3N5_wM65GbLXnL17ACRGiT0NFpwjqH_C7SqBpy1Fk9wCiQJ8BePzq4IjKgHo0xDDtDNk91kw8O4hYjc14yOfbz4AHnKJ_BLkkEgzp-OgFYBUaN8N1_c58bT5xFI24xP7oV1wcK4e0kHOekPC59DnBAi7H10BJaMSYb4ohQr_YKf7I1ux3B6PC3BZgq_3pIHiJ_WFwBBXBLftlJrNzSQniUgNayIrP6NAsOVULgHh3iHyv8v3z0ptOVTyZ1-wUJgC92iwnnYVtpacDtb-OxBDD_M1OWHO1TLzIcopC_s2uPzuKpqy3dONmhFFGuOAzBEhmulqg  ca.crt:     1025 bytes

复制上述输出中的token。

访问Kuboard

使用如下命令获取kuboard暴露的端口号:

kubectl get svc -n kube-system

输出:

[root@instance-ji0xk9uh-1 ~]# kubectl get svc -n kube-system  NAME       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE  kube-dns   ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   65m  kuboard    NodePort    10.96.208.85   <none>        80:32567/TCP             4m6s

输出的最后一行,可以看到kuboard服务对外暴露的端口号为 32567,使用任意一个worker节点的 ip+此端口 即可访问kuboard。

注意:如果使用的云服务器,请保证端口32567是开放的。

输入上面我们复制的token即可成功登录。

每个框框都可以点进去看看,熟悉一下kuboard提供的大致功能。

总结

本章我们一起安装的k8s的Dashboard,我们使用的是kuboard,这是一款比较不错的Dashboard。

通过kuboard我们是可以直接部署微服务的,但是我们还缺少一个docker仓库。当然,使用公共的仓库也是可以的,但是最好自己安装一个。

参考

本文参考自https://kuboard.cn/install/install-dashboard.html,非常推荐这个网站,上面有很多k8s不错的教程,非常适合新手入门。