K8S中安装metrics-server的正确方式
2020-08-17 23:06
549 查看
作者:李毓
在正常 情况下,控制台输入kubectl top pods 命令,会返回如下提示:
[root@adm-master ~]# kubectl top pods Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
这是因为还缺少个组件,这个组件叫做metric-server。
这是一个K8S的资源监控工具,监控CPU和内存的使用情况。他是一款必须安装的组件,因为有其他许多组件依赖他,比如HPA,scheduler,kubectl top
下面我们来安装:
在这里下载最新的版本
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server
[root@adm-master ~]# kubectl apply -f metrics-server-latest/ clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created serviceaccount/metrics-server created configmap/metrics-server-config created deployment.apps/metrics-server-v0.3.6 created service/metrics-server created clusterrole.rbac.authorization.k8s.io/system:metrics-server created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
然后你会发现,仍然提示刚才的错误。
其实,官网已经提示了,metric-server安装要满足2个条件
1、在master节点要能访问metrics server pod ip(kubeadm部署默认已经满足该条件,二进制部署需注意要在master节点也部署node组件)
2、apiserver启用聚合层支持(kubeadm默认已经启用,二进制部署需自己启用)
yaml里增加两个参数:跳过证书验证和使用node ip通信
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
在deployment.yaml 修改配置:
- name: metrics-server image: registry.cn-shenzhen.aliyuncs.com/carp/metrics-server-amd64:0.3.1 imagePullPolicy: IfNotPresent args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP
kubectl apply -f 之后仍然提示之前的错误。
我们再看一下api 的日志
E0817 14:43:50.033248 1 available_controller.go:420] v1beta1.metrics.k8s.io failed with: failing or missing response from https://10.1.194.67:443/apis/metrics.k8s.io/v1beta1: Get https://10.1.194.67:443/apis/metrics.k8s.io/v1beta1: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
我们在/etc/kubernetes/manifests里面改一下apiserver的配置
注意:这个是k8s在1.7的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在不修改Kubernetes核心代码的同时扩展Kubernetes API。
--enable-aggregator-routing=true
重新应用一下
kubectl apply -f kube-apiserver.yaml
大功告成
相关文章推荐
- K8S中安装metrics-server的正确方式
- JavaScript实战项目--瀑布流效果
- 递归 尾递归_当递归开始救援
- 重新整理计算机原理概念——开篇
- OCR之engravedt_hdev
- 【论文翻译】Machine learning: Trends, perspectives, and prospects
- 将节点API部署到Cloud Run
- webpack封装脚手架
- grpc协议_gRPC和协议缓冲区简介
- Maven整合Spring框架和MyBatis框架
- react钩子_React钩101
- 合并两个排序的链表、树的子结构、二叉树的镜像
- 网上赚钱的好方法,实战案例讲解,让你秒懂赚钱的秘密!
- 在家里赚钱的工作,在家利用互联网赚钱,应该这样干!
- 自媒体人15种赚钱方法,做好自媒体的4点方法!
- MD5加密及在Android中的使用
- 如何在网上挣钱?成为细分领域的高手,赚钱就很容易了!
- this和super的总结 static的总结
- 17岁创业从哪下手?这三类人最容易成功!
- 互联网现在有什么可以赚钱的项目?4个秘诀分享给你!