大家是更喜欢黑白漫画呢?还是彩色动画呢?
图片来自电影《你的名字》海报和相关临摹,图片版权归属原作者
相信大家是仁者见仁、智者见智。我个人更喜欢看彩色动画,在绚烂的色彩中更能引起视觉冲突和心动的感觉。
类似的,在我们IT界,CLI和API就是黑白漫画,而GUI界面就是彩色动画。Kubernetes并没有默认部署的界面,但是却有一个可以额外添加的基于Web的Dashboard来完成图形化的监控和管理。
Dashboard安装部署
Dashboard因为没有在Kubernetes中直接默认安装,所以需要进行下载部署。推荐的方式就是采用容器化的方式作为应用部署到Kubernetes平台中。
具体安装过程可以参见官网:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
- 首先调用dashboard的yaml文件建立namespace、serviceaccount、service、configmap、secret、role、binding和deployment等。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
- 修改dashboard的service,使其使用NodePort模式
kubectl --namespace=kubernetes-dashboard edit service kubernetes-dashboard
将默认的type: ClusterIP改成type: NodePort模式 - 查询service在服务器上分配的物理端口
kubectl -n kubernetes-dashboard get service
NAME | TYPE | CLUSTER-IP | EXTERNAL-IP | PORT(S) | AGE |
---|---|---|---|---|---|
dashboard-metrics-scraper | ClusterIP | 10.100.103.3 | none | 8000/TCP | 5m24s |
kubernetes-dashboard | NodePort | 10.100.15.196 | none | 443:32572 /TCP |
5m24s |
上表中的443:32572就表示对应的ClusterIP端口为443,Node节点的端口为32572.
- 对于服务器可以直接采用其公网端口的32572来进行Dashboard的Web访问:
https://public_ip:32572
其中,32572用上一步命令返回的实际NodePort替代。
但是你可能会在不同的浏览器上,碰到不同的报错。比如Chrome上的:
其本质原因是Dashboard采用了自签名的Cacerts,很多浏览器都不支持。
解决方法可以调整Dashboard的certs。但是最常用的方式其实就是换一个浏览器。推荐大家采用Firefox浏览器来访问Dashboard。 - 第一次登陆会触发登陆权限控制
建议大家选用Token模式完成用户验证。 - 先创建配置用于建立集群管理员账户
vi dashboard.yaml
输入内容并保存:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
- 然后激活这个账号,并赋予其cluster-admin权限
kubectl apply -f dashboard.yaml
- 查询新建账号的Bearer Token
#kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-dtqm2
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: 2e360fda-a16d-44ef-8281-2b3e03618151
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWR0cW0yIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZTM2MGZkYS1hMTZkLTQ0ZWYtODI4MS0yYjNlMDM2MTgxNTEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Coa17yCI7FkRDEhYbrRhPFGbdN_5Buwu3cxvNzLv0CTXiRpz1WjMEC11GKG1xue16nq8KXDZy0BYoRhucFF0tYWUfHKC9Nt6cDh9yXuqGiHsL05h-1s0aA04UiQ850NHrGbo8GqTzN22iZfhMac4tdadU-QiPvQa5GzGVPsT9BsO2iv58pONjeprt3b0g6pMM6rqad8PeODq9UAhPXIZXiUiRan7Nh24AGKv5SwJ6FA7ueBP5OoCjKTMvxiBuiy3gnk39f1kWB2XH9vCKMONdS1GgC15wuXC0k7eaAJZQp-y0nOuq7Jv43hFWTMXhOoJf5kuu4KB9MJq0uGgIeZaEg
ca.crt: 1025 bytes
namespace: 20 bytes
- 将上图中的token值输入Dashboard图形化界面
顺利进入了Dashboard!
- 部署Deployment
单击顶部操作区的+Create按钮就可以创建Deployment等控制器了。可以选择Create from form
分页来进行容器镜像的指定,也可以选择Create from input
从YAML或JSON文件来创建deployment。 - 在线修改
点击具体的控制器,可以选择Edit
进行YAML文件的修改。修改完保存后,Dashboard会自动Apply这个变更,从而是修改后的功能立刻生效。 - 信息查询
类似于Kuberctl describe
,当点击具体的控制器后,可以看到该控制器的主要配置和状态。 - 日志查询
点击某一个POD,可以在右侧的选项栏选择logs,效果和kubernetes logs
类似。 - 其他监控
在Dashboard主界面可以通过切换namespace查询更多的配置和状态信息。具体功能留待大家实践。
大家通过本篇文章的学习,是更加喜欢简单明了的黑白漫画了呢?还是丰富多彩的动画了呢?在课程里,我们将接着带着大家进入另一个专题,了解Kubernetes的监控和日志管理。