首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3. 死磕 k8s系列之安装k8s仪表盘(Dashboard)

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

作者头像
彤哥
发布2020-02-10 11:25:57
4.7K0
发布2020-02-10 11:25:57
举报
文章被收录于专栏:彤哥读源码彤哥读源码

题外话

前面两集单词写错了,正确的写法是 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不错的教程,非常适合新手入门。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 彤哥读源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 前提
  • 安装kuboard
  • 获取token
  • 访问Kuboard
  • 总结
  • 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档