Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster。容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据。
Metrics Server 并不是 kube-apiserver 的一部分,而是通过 Aggregator 这种插件机制,在独立部署的情况下同 kube-apiserver 一起统一对外服务的。
Metrics-server属于Core metrics(核心指标),提供API metrics.k8s.io,仅提供Node和Pod的CPU和内存使用情况。而其他Custom Metrics(自定义指标)由Prometheus等组件来完成。
资源地址:GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.
mkdir metrics-server
cd metrics-server/
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml ##下载清单文件
vim components.yaml
133 - --secure-port=4443 ##修改端口
137 image: metrics-server/metrics-server:v0.5.1 ##使用本地仓库的镜像
148 - containerPort: 4443 ##修改端口
kubectl apply -f components.yaml ##应用
此时查看pod,发现此pod并没有就绪
这是因为没有启用TLS Bootstrap 证书签发。
Metric Server 支持一个参数 --kubelet-insecure-tls,可以跳过这一检查,然而官方也明确说了,这种方式不推荐生产使用。所以我们在此启用TLS Bootstrap 证书签发即可。
vim /var/lib/kubelet/config.yaml
......
serverTLSBootstrap: true
systemctl restart kubelet
以上两步操作所有node都需要执行
kubectl get csr
kubectl certificate approve
将每个 csr 的
部署完毕即可使用命令查看pod和node的资源使用情况
Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
网址:GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters
mkdir dashboard
cd dashboard/
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml ##下载清单文件
vim recommended.yaml ##把镜像改为本地路径
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard ##更改svc类型为LoadBalancer,分配ip,供外部访问
vim rbac.yaml ##对dashboard进行授权
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 ##应用
可以在对应的namespace看到运行情况
用浏览器访问:https://172.25.56.150
需要token来登陆
kubectl -n kubernetes-dashboard get secrets
kubectl -n kubernetes-dashboard describe secrets kubernetes-dashboard-token-5tm6l
将此token复制上去
即可使用可视化 wab 界面来进行管理与查看k8s集群
除了dashboard,还可以用k9s来实现图形化管理,这样更方便。
docker run --rm -it -v $KUBECONFIG:/root/.kube/config derailed/k9s