运维开发网

玩玩kubernetes可视化界面吧

运维开发网 https://www.qedev.com 2020-11-25 10:05 出处:51CTO 作者:Rainbowhhy
1前言管理kubernentes集群时,总是需要登陆机器命令行查看,难免有时候显得繁琐。那么有没有一种可视化的更方便管理kubernente的工具呢,这样更方便的全局查看整个集群的各种资源。目前用的比较多的是KubernetesDashBoard和Rancher,其中Kubernentes-DashBoard是kubernentes官方提供的WebUI,Rancher是第三方开发的。当然也有很多公

1 前言

管理kubernentes集群时,总是需要登陆机器命令行查看,难免有时候显得繁琐。那么有没有一种可视化的更方便管理kubernente的工具呢,这样更方便的全局查看整个集群的各种资源。

目前用的比较多的是Kubernetes DashBoard和Rancher,其中Kubernentes-DashBoard是kubernentes官方提供的Web UI,Rancher是第三方开发的。当然也有很多公司会根据自己的实际需求,通过kubernentes提供的api接口开发适合自己的可视化管理界面。

用户可以通过可视化界面对Kubernetes集群中部署的应用进行问题处理和管理,查看集群中应用的运行情况,同时创建或修改部署、任务、服务等Kubernetes的资源。能够对部署的应用进行扩缩容,进行滚动更新、重启Pod和部署新应用。本文来讲一讲Kubernentes DashBoard,当然web 管理界面虽然方便,但是命令行的使用技能任何时候都不能丢。

2 DashBoard部署

2.1 环境准备

查看kubernentes集群的版本

玩玩kubernetes可视化界面吧

根据自己的机器选择相应的版本,到官方的github仓库上面可以看到每个版本都有对应的kubernentes集群对应能适配的版本。因为我的集群是1.18.10版本,所以dashboard选择2.0.3版。

玩玩kubernetes可视化界面吧

2.2 部署过程

2.2.1 下载dashboard的yaml文件

[[email protected] ~]# wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

2.2.2 修改dashboard的yaml文件

修改service部分,默认service是ClusterIP类型,这里改称NodePort类型,是集群外部能否访问。

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30002
  selector:
    k8s-app: kubernetes-dashboard

应用yaml并查看创建的资源

[[email protected] ~]# kubectl apply -f recommended.yaml

玩玩kubernetes可视化界面吧

此时web界面就可以打开了

玩玩kubernetes可视化界面吧

创建登陆用户

[[email protected] ~]# vim admin.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kubernetes-dashboard
[[email protected] ~]# kubectl apply -f admin.yaml

查看登陆token

[[email protected] ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin | awk '{print $1}')|grep '^token'|awk '{print $2}'

此处查看到的token就是web页面登陆的token。登陆进去以后就可以全局的观察集群状态

查看整个集群

玩玩kubernetes可视化界面吧

查看node节点

玩玩kubernetes可视化界面吧

查看pod资源

玩玩kubernetes可视化界面吧

2.3 安装资源监控Metrics Server

上面的页面可以看到cpu和内存的使用率都没有值,是因为没有安装metrics server

2.3.1 下载metric server的yaml文件

[[email protected] ~]# wget wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml

2.3.2 下载metric server镜像

因为机器无法访问google的镜像仓库,所以需要从dockerhub第三方仓库下载

需要到所有的node节点执行

[[email protected] ~]# docker pull phperall/metrics-server:v0.4.1
[[email protected] ~]# docker tag phperall/metrics-server:v0.4.1 k8s.gcr.io/metrics-server/metrics-server:v0.4.1

2.3.3 修改yaml文件

修改metrics api启动参数,防止证书错误

在启动参数args处增加

  • --kubelet-insecure-tls
    [[email protected] ~]# kubectl apply -f components.yaml

    可以使用kubectl top查看资源使用

    玩玩kubernetes可视化界面吧

2.3.4 集群资源状态

此时再来查看集群,可以看到cpu和内存都有监控值了

查看node节点

玩玩kubernetes可视化界面吧

查看pod资源

玩玩kubernetes可视化界面吧

2.4 配置登陆config

将上文的token写入到.kube/config文件中,格式token: $TOKEN

再次登陆web的时候,就不用每次输入一长串的token了,可以选择Kubeconfig登陆。采用.kube/config文件,类似ssh的密钥一样。

2.5 配置用户名密码登陆

有时候使用token登陆,很麻烦,这时我们可以开启用户名密码登陆

2.5.1 开启kube-apiserver密码认证

创建用户名密码文件

[[email protected] ~]# echo 'admin,dev,10001,"system:authentication"' > /etc/kubernetes/pki/auth.csv

修改kube-apiserver的yaml文件

[[email protected] ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
启动参数添加 - --basic-auth-file=/etc/kubernetes/pki/auth.csv

2.5.2 配置用户权限

上面已经创建了用户dev,但是该用户没有查看集群资源的权限,我们需要给用户配置权限。

此处我们给用户配置只有查看namespace的权限

[[email protected] ~]# vim dev.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
  name: dev-readonly
rules:
- apiGroups:
  - ""
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - metrics.k8s.io
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dev-readonly
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: dev-readonly
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:authentication

[[email protected] ~]# kubectl apply -f dev.yaml

2.5.3 开启dashboard密码认证

修改dashboard密码文件

[[email protected] ~]# vim recommended.yaml
启动参数添加 - --authentication-mode=basic,token
[[email protected] ~]# kubectl apply -f recommended.yaml

2.5.4 登陆dashboard

此时登陆web节目,可以发现多了一种认证方式。

玩玩kubernetes可视化界面吧

使用上面的dev用户登陆,可以看到只显示namespace资源。

2.5.5 注意事项

kubernetes从1.19版本开始已经弃用了basic-auth-file的方式:https://kubernetes.io/docs/setup/release/notes/

玩玩kubernetes可视化界面吧

file:///home/rainbowhhy/%E6%A1%8C%E9%9D%A2/12.png

至此大功告成

参考文档

https://github.com/kubernetes/dashboard

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号