文章目录
- 一、Metrics-Server部署
- 1.获取相关资源
- 2.解决报错问题
- 3.检测部署是否成功
- 4.测试效果
- 二、Dashboard部署
- 1.下载部署文件、拉取相关镜像
- 2.应用部署文件并修改为NodePort方式,以便外部访问
- 3.生成Token并使用该token登陆
- 4.默认dashboard对集群没有操作权限,需要做相关授权
一、Metrics-Server部署
Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster。
容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据。
Metrics API 只可以查询当前的度量数据,并不保存历史数据。
Metrics API URI 为 /apis/metrics.k8s.io/,在 k8s.io/metrics 维护。
必须部署 metrics-server 才能使用该 API,metrics-server 通过调用 Kubelet Summary API 获取数据。
1.获取相关资源
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml %下载部署文件
docker pull bitnami/metrics-server:0.4.2 %拉取相关镜像
docker push reg.westos.org/library/metrics-server:0.4.2 %上传镜像到私有仓库中(在这之前要对镜像做tag)
修改yaml文件中的镜像路径为metrics-server:0.4.2 %默认在私有仓库的library项目下查找
2.解决报错问题
应用部署文件之后,查看pod状态会发现处于未就绪状态,这种情况下是不生效的:
通过logs查看问题原因:
kubectl logs -n kube-system metrics-server-xxxxxxx
上述报错信息是未通过证书检查所导致的,查看官方文档解决这个问题:
启用TLS Bootstrap 证书签发
vim /var/lib/kubelet/config.yaml %所有节点的这个文件都要修改并重启kubelet服务
...
serverTLSBootstrap: true %跳过证书检查
systemctl restart kubelet %重启kubelet服务
kubectl certificate approve 证书名称 %签发证书
3.检测部署是否成功
4.测试效果
可以看到node、pod的cpu和内存负载情况
二、Dashboard部署
Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
1.下载部署文件、拉取相关镜像
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
镜像:
kubernetesui/dashboard:v2.2.0
kubernetesui/metrics-scraper:v1.0.6
上传镜像到私有仓库,此时路径需要对应,可以在私有仓库中创建kubernetesui项目,然后把这两个镜像放到该项目下,或者更改yaml文件中的镜像路径
2.应用部署文件并修改为NodePort方式,以便外部访问
kubectl apply -f recommended.yaml %应用部署文件
kubectl -n kubernetes-dashboard describe svc kubernetes-dashboard %查看其创建的svc的详细信息
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard %更改为NodePort方式
kubectl -n kubernetes-dashboard get svc %查看是否已经更改
3.生成Token并使用该token登陆
kubectl -n kubernetes-dashboard get secrets %查看secrets名字
NAME TYPE DATA AGE
default-token-h95lm kubernetes.io/service-account-token 3 10m
kubernetes-dashboard-certs Opaque 0 10m
kubernetes-dashboard-csrf Opaque 1 10m
kubernetes-dashboard-key-holder Opaque 2 10m
kubernetes-dashboard-token-kcw7s kubernetes.io/service-account-token 3 10m
kubectl describe secrets kubernetes-dashboard-token-kcw7s -n kubernetes-dashboard %查看具体token
kubectl -n kubernetes-dashboard describe secrets kubernetes-dashboard-token-xxxx %查看token的另外一种方法
kubectl get svc -n kubernetes-dashboard %查看端口映射
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.111.253.105 <none> 8000/TCP 4m31s
kubernetes-dashboard NodePort 10.110.193.162 <none> 443:32427/TCP 4m31s
访问的时候要https方式访问ip加暴露出来的端口号:
4.默认dashboard对集群没有操作权限,需要做相关授权
vim rbac.yaml: %编辑rbac.yaml文件做RBAC授权
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kubernetes-dashboard
kubectl apply -f rbac.yaml %应用部署文件
未作授权之前的显示页面:有大量警告
授权后可对集群内的资源进行查看并管理:
可以查看已创建pod的yaml文件并编辑,来达到创建或更新Pod的目的: