k8s安装之heapster与metric(代码片段)

author author     2023-05-05     441

关键词:

heapster
此模块,在1.8版本以后由metricserver替代

wget https://github.com/kubernetes/heapster/archive/v1.5.4.tar.gz
tar -zxf v1.5.4.tar.gz
cd heapster-1.5.4/
kubectl create -f deploy/kube-config/rbac/heapster-rbac.yaml ##授权
kubectl create -f deploy/kube-config/standalone/heapster-controller.yaml

#####说明问题点

kubectl get pod --namespace=kube-system
kubectl logs -f pods/heapster-75c97b8594-qgs5v -n kube-system ##查看日志信息
1 reflector.go:190] k8s.io/heapster/metrics/util/util.go:30: Failed to list *v1.Node: nodes is forbidden: User "system:serviceaccount:kube-system:heapster" cannot list nodes at the cluster scope
kubectl create -f deploy/kube-config/rbac/heapster-rbac.yaml
kubectl delete -f deploy/kube-config/standalone/heapster-controller.yaml
metrics-server
metrics-server 替换heapster

生成证书:
cat > metrics-server-csr.json <<EOF

  "CN": "aggregator",
  "hosts": [],
  "key": 
    "algo": "rsa",
    "size": 2048
  ,
  "names": [
    
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "4Paradigm"
    
  ]

EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes metrics-server-csr.json | cfssljson -bare metrics-server

kube-apiserver增加配置,打开相关配置

        --requestheader-allowed-names=aggregator         --requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem         --requestheader-allowed-names=aggregator         --requestheader-extra-headers-prefix=X-Remote-Extra-         --requestheader-group-headers=X-Remote-Group         --requestheader-username-headers=X-Remote-User         --proxy-client-cert-file=/etc/kubernetes/ssl/metrics-server.pem         --proxy-client-key-file=/etc/kubernetes/ssl/metrics-server-key.pem         --enable-aggregator-routing=true 

--advertise-address:apiserver 对外通告的 IP(kubernetes 服务后端节点 IP);
--default--toleration-seconds:设置节点异常相关的阈值;
--max-
-requests-inflight:请求相关的最大阈值;
--etcd-:访问 etcd 的证书和 etcd 服务器地址;
--experimental-encryption-provider-config:指定用于加密 etcd 中 secret 的配置;
--bind-address: https 监听的 IP,不能为 127.0.0.1,否则外界不能访问它的安全端口 6443;
--secret-port:https 监听端口;
--insecure-port=0:关闭监听 http 非安全端口(8080);
--tls-
-file:指定 apiserver 使用的证书、私钥和 CA 文件;
--audit-:配置审计策略和审计日志文件相关的参数;
--client-ca-file:验证 client (kue-controller-manager、kube-scheduler、kubelet、kube-proxy 等)请求所带的证书;
--enable-bootstrap-token-auth:启用 kubelet bootstrap 的 token 认证;
--requestheader-
:kube-apiserver 的 aggregator layer 相关的配置参数,proxy-client & HPA 需要使用;
--requestheader-client-ca-file:用于签名 --proxy-client-cert-file 和 --proxy-client-key-file 指定的证书;在启用了 metric aggregator 时使用;
--requestheader-allowed-names:不能为空,值为逗号分割的 --proxy-client-cert-file 证书的 CN 名称,这里设置为 "aggregator";
--service-account-key-file:签名 ServiceAccount Token 的公钥文件,kube-controller-manager 的 --service-account-private-key-file 指定私钥文件,两者配对使用;
--runtime-config=api/all=true: 启用所有版本的 APIs,如 autoscaling/v2alpha1;
--authorization-mode=Node,RBAC、--anonymous-auth=false: 开启 Node 和 RBAC 授权模式,拒绝未授权的请求;
--enable-admission-plugins:启用一些默认关闭的 plugins;
--allow-privileged:运行执行 privileged 权限的容器;
--apiserver-count=3:指定 apiserver 实例的数量;
--event-ttl:指定 events 的保存时间;
--kubelet-:如果指定,则使用 https 访问 kubelet APIs;需要为证书对应的用户(上面 kubernetes.pem 证书的用户为 kubernetes) 用户定义 RBAC 规则,否则访问 kubelet API 时提示未授权;
--proxy-client-*:apiserver 访问 metrics-server 使用的证书;
--service-cluster-ip-range: 指定 Service Cluster IP 地址段;
--service-node-port-range: 指定 NodePort 的端口范围;
kube-apiserver 的 --requestheader-allowed-names 参数需要与metric证书CN字段一致,否则后续访问 metrics 时会提示权限不足。
如果 kube-apiserver 机器没有运行 kube-proxy,则还需要添加 --enable-aggregator-routing=true 参数;
关于 --requestheader-XXX 相关参数,参考:

https://github.com/kubernetes-incubator/apiserver-builder/blob/master/docs/concepts
https://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/
注意:

requestheader-client-ca-file 指定的 CA 证书,必须具有 client auth and server auth;  
如果 --requestheader-allowed-names 为空,或者 --proxy-client-cert-file 证书的 CN 名称不在 allowed-names 中,则后续查看 node 或 pods 的 metrics 失败,提示:  
###### Error from server (Forbidden): nodes.metrics.k8s.io is forbidden..

kube-controller-manager增加如下参数
--horizontal-pod-autoscaler-use-rest-clients=true

部署:
git clone https://github.com/kubernetes-incubator/metrics-server
cd metrics-server/deploy/1.8+/
修改metrics-server-deployment.yaml
        imagePullPolicy: Always
        command:
        - /metrics-server       
        - --metric-resolution=30s
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP

# cat resource-reader.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: system:metrics-server
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - nodes/stats
  - namespaces
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system:metrics-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system

kubectl apply -f .

参考链接:
https://blog.51cto.com/blief/2416018
https://www.orchome.com/1203
https://www.jianshu.com/p/a89e1ee3d45e
https://blog.51cto.com/ylw6006/2114338
https://www.jianshu.com/p/d017fc44959e

k8s安装之kube-state-metrics.yaml(代码片段)

概述已经有了cadvisor、heapster、metric-server,几乎容器运行的所有指标都能拿到,但是下面这种情况却无能为力:我调度了多少个replicas?现在可用的有几个?多少个Pod是running/stopped/terminated状态?Pod重启了多少次?我有多少job在运... 查看详情

k8s安装之eventrouter.yaml(代码片段)

k8s的heapster项目中止以后,事件收集的项目,就推荐使用https://github.com/heptiolabs/eventrouter项目了EventrouterThisrepositorycontainsasimpleeventrouterforthe Kubernetes project.Theeventrouterservesasanactivewatcher 查看详情

k8s监控组件heapster安装部署

k8s监控组件heapster安装部署参考文档https://github.com/kubernetes/heapster/tree/master/deployk8s集群安装部署http://jerrymin.blog.51cto.com/3002256/1898243 k8s集群RC、SVC、POD部署http://jerrymin.blog.51cto.com/3002256/190 查看详情

heapster安装(k8s1.11以后废弃了)

HeapSterInfluxDB(持久存储)Grafana展示InfluxDB的数据(类似kibana)#安装InfluxDB#githubhttps://github.com/kubernetes-retired/heapster#下载文件wgethttps://raw.githubusercontent.com/kubernetes-retired/heapster/master/deploy/kube-config/influxdb/influxdb.yaml#导入kubectlapply-finflux... 查看详情

k8s插件heapster(代码片段)

部署heapster组件[[email protected]monitor]#catheapster.yamlapiVersion:v1kind:ServiceAccountmetadata: name:heapster namespace:kube-system---kind:ClusterRoleBindingapiVersion:rbac.authorizati 查看详情

基于kubernetesv1.14.0之heapster与influxdb部署(代码片段)

1、部署准备说明:所有的容器组都运行在kube-system命名空间github项目地址https://github.com/kubernetes-retired/heapster.gitmkdirheapstergitclonehttps://github.com/kubernetes-retired/heapster.gitcdheapster/deploy/kube-config/influ 查看详情

k8s群集之动态扩缩容——hpa(代码片段)

...pod的副本数量。若要实现自动扩缩容的功能,还需要部署heapster服务,用来收集及统计资源的利用率,支持kubectltop命令,heapster服务集成在prometheus(普罗米修斯)MertricServer服务中,所以说,为了方便,我这里基于prometheus服务的... 查看详情

k8s集群监控(代码片段)

部署metricskubernetes早期版本依靠Heapster来实现完整的性能数据采集和监控功能,k8s在1.8版本开始,性能数据开始以MetricsAPI的方式提供标准化接口,并且从1.10版本开始讲Heapster替换为MetricsServer,在新版本的Metrics当中可以对Node,Pod... 查看详情

kubernetes(k8s)之资源监控(代码片段)

...-Server是集群核心监控数据的聚合器,用来替换之前的heapster。容器相关的Metrics主要来自于kubelet内置的cAdvisor服务,有了Metrics-Server之后,用户就可以通过标准的Ku 查看详情

云原生之kubernetes实战在k8s集群下helm工具的安装与使用

【云原生之kubernetes实战】在k8s集群下helm工具的安装与使用一、helm工具介绍1.helm简介2.helm的基本特性3.helm的组件二、helm-V3特点1.Helm工作示意图2.helmV3新增特性3.helm与k8s对应支持的版本三、helm的二进制安装1.下载二进制包2.解压压... 查看详情

13安装heapster(代码片段)

先看效果:   像这样的富文本编辑器,在我们做后台管理项目的时候经常遇到,本文章展示一种可以实现此效果的方法;首先在GitHub上搜索 vue-quil-editor 去GitHub;1.install 安装插件npminstallvue-quill-editor--save#ory... 查看详情

k8s集群安装部署之网络拓扑图(代码片段)

....主机分别为:10.3.153.211(test-master)与10.3.153.212(test-standby)2.安装应用:nginx、keepalived、etcd3.应用服务作用:nginx:提供四层与七层的服务代理转发,分别对两台apiserver6443端口进行转发。keepalived:保证两台Proxy服务器的NGINX服务高可... 查看详情

11-部署heapster插件(代码片段)

配置和安装Heapster到heapsterrelease页面下载最新版本的heapster。$wgethttps://github.com/kubernetes/heapster/archive/v1.3.0.zip$unzipv1.3.0.zip$mvv1.3.0.zipheapster-1.3.0文件目录:heapster-1.3.0/deploy/kube-config/influxdb$ 查看详情

k8s入门系列之集群安装篇(代码片段)

...请阅读上一篇文章《k8s入门系列之介绍篇》Kubernetes集群安装部署•Kubernetes集群组件:  -etcd一个高可用的K/V键值对存储和服务发现系统  -flannel实现夸主机的容器网络的通信  -kube-apiserver提供kubernetes集群的API调用  -kub... 查看详情

k8s实战--edusoho平台创建(代码片段)

...删除NodeKubernetesDashboard1.8.3部署k8s原生的集群监控方案(Heapster+InfluxDB+Grafana)项目地址k8s-edusoho平台创建镜像下载如上面的项目地址无法使用,请使用下面链接下载相应镜像dockerpullwutengfe 查看详情

k8s存储之pv与pvc(代码片段)

目录前言一、k8s容器磁盘二、emptyDir存储卷三、PV和PVC静态配置PV步骤总结前言K8S存储是通过卷:Volumndocker目录结构:bootfsrootfs镜像一、k8s容器磁盘容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应... 查看详情

k8s存储之pv与pvc(代码片段)

目录前言一、k8s容器磁盘二、emptyDir存储卷三、PV和PVC静态配置PV步骤总结前言K8S存储是通过卷:Volumndocker目录结构:bootfsrootfs镜像一、k8s容器磁盘容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应... 查看详情

k8s二进制部署之node安装docker(代码片段)

...。当然,如果公司允许连接互联网,可以同过yum安装,这种方式执行一条命令 查看详情