题外话
前面两集单词写错了,正确的写法是 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集群。
如果是按照上一章介绍的方法安装的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
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暴露的端口号:
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不错的教程,非常适合新手入门。