文章目录

  • 一、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项目下查找

K8S的组件监控方案 k8s 监控_Server


K8S的组件监控方案 k8s 监控_Server_02

2.解决报错问题

应用部署文件之后,查看pod状态会发现处于未就绪状态,这种情况下是不生效的:

K8S的组件监控方案 k8s 监控_Server_03


通过logs查看问题原因:

kubectl logs -n kube-system metrics-server-xxxxxxx

K8S的组件监控方案 k8s 监控_Server_04


上述报错信息是未通过证书检查所导致的,查看官方文档解决这个问题:

启用TLS Bootstrap 证书签发
vim /var/lib/kubelet/config.yaml  %所有节点的这个文件都要修改并重启kubelet服务
...
serverTLSBootstrap: true     %跳过证书检查
systemctl  restart kubelet   %重启kubelet服务
kubectl certificate approve 证书名称  %签发证书

K8S的组件监控方案 k8s 监控_Server_05

K8S的组件监控方案 k8s 监控_K8S的组件监控方案_06

3.检测部署是否成功

K8S的组件监控方案 k8s 监控_应用部署_07


K8S的组件监控方案 k8s 监控_Server_08

4.测试效果

可以看到node、pod的cpu和内存负载情况

K8S的组件监控方案 k8s 监控_应用部署_09


K8S的组件监控方案 k8s 监控_API_10


K8S的组件监控方案 k8s 监控_K8S的组件监控方案_11

二、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的详细信息

K8S的组件监控方案 k8s 监控_Server_12


K8S的组件监控方案 k8s 监控_K8S的组件监控方案_13

kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard   %更改为NodePort方式
 kubectl -n kubernetes-dashboard get svc    %查看是否已经更改

K8S的组件监控方案 k8s 监控_API_14


K8S的组件监控方案 k8s 监控_API_15

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加暴露出来的端口号:

K8S的组件监控方案 k8s 监控_API_16

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    %应用部署文件

未作授权之前的显示页面:有大量警告

K8S的组件监控方案 k8s 监控_应用部署_17


授权后可对集群内的资源进行查看并管理:

K8S的组件监控方案 k8s 监控_Server_18


K8S的组件监控方案 k8s 监控_Server_19


可以查看已创建pod的yaml文件并编辑,来达到创建或更新Pod的目的:

K8S的组件监控方案 k8s 监控_应用部署_20


K8S的组件监控方案 k8s 监控_API_21


K8S的组件监控方案 k8s 监控_API_22


K8S的组件监控方案 k8s 监控_Server_23