metrics-server作用:监控必须的组件
正确部署metrics-server 0.3.6,3.7如下:

修改k8s配置

修改/var/lib/kubelet/config.yaml在最后添加

serverTLSBootstrap: true

serverTLSBootstrap作用:
TLS Bootstrap 证书签发

重起

systemctl daemon-reload
systemctl restart kubelet

签发证书(删除无用的证书,有用的会自动再次生成)

kubectl get csr
kubectl certificate approve csr-xxx

如果证书过多删除之:

kubectl get csr | awk '{print $1}' |xargs kubectl delete csr

修改apiserver配置(1.9版本不用添加)
vim /etc/kubernetes/manifests/kube-apiserver.yaml
在command下添加
enable-aggregator-routing=true

作用:
打开到 endpoints IP 的 aggregator 路由请求,替换 cluster IP。

安装metrics-server(3.6,3.7自己改)

1.下载安装文件https://github.com/chenjiangtao/spring-boot-on-kubernetes/blob/main/kubernetes/monitoring/new/metrics-server-3.6.yaml

2.修改deployment文件,检查文件中的两个位置:
hostNetwork: true #修改网络。作用:Pod 网络模式
- --kubelet-insecure-tls #为了方便测试我这里直跳过安全tls,推荐配置相关证书
如图:
在这里插入图片描述

#这个改不改都行 (1.9版本可以不改)
runAsNonRoot: true #把true改成false
作用:

3.查看安装结果

kubectl top nodes
kubectl top pods -A
kubectl get –raw “/apis/metrics.k8s.io/v1beta1/nodes/starbucks-mysql1” |jq .

常见问题处理(1.9没有这些问题)

错误如下:
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
解决方案:
在/etc/kubernetes/manifests/kube-apiserver.yaml 文件command字段下增加
--enable-aggregator-routing=true
然后重启kubelet便能解决
systemctl restart kubelet

问题处理:证书重新签发一下就行了:kubectl certificate approve csr-xxx
在这里插入图片描述

注意csr会被定期删除

为了减少集群中遗留的过时的 CertificateSigningRequest 资源的数量, 一个垃圾收集控制器将会周期性地运行。 此垃圾收集器会清除在一段时间内没有改变过状态的 CertificateSigningRequests:

  • 已批准的请求:1小时后自动删除
  • 已拒绝的请求:1小时后自动删除
  • 挂起的请求:1小时后自动删除
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐