计算机系统应用教程网站

网站首页 > 技术文章 正文

K8S集群metrics-server组件安装 k8s集群包含哪些组件

btikc 2024-10-10 04:51:23 技术文章 16 ℃ 0 评论

metrics-server是k8s集群不可缺少的组件,有了这个组件就可以使用下面的命令,

[root@master metrics-server]# kubectl top nodes
NAME                 CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master.k8s.xyz   422m         14%    1120Mi          65%       
node.k8s.xyz     68m          6%     467Mi           53% 

依赖这个组件还可以实现集群Pod的自动水平伸缩和垂直伸缩-即HPA与VPA。

在开始之前,有必要对metrics-server和kube-state-metrics做对比,它们两个都提供很多metrics,但不能相互替代,二者是相互补充的关系,各有专攻。

metrics-server是heapster的替代者,在k8s集群中充当一个扩展的API Server,它从节点上运行的kubelet服务采集metrics,聚合处理后,通过特定的URL暴露采集的数据。kube-state-metrics更偏向于集群监控,特别是业务层,比如需要知道集群中运行了多少个Deployment,运行了多少Pod,每个Pod的状态是怎样,Pod重启了多少次等,kube-state-metrics可以给到你答案。

安装metrics-server有两个条件:

  • API Server启用Aggregator routing,因为metrics server也提供API服务,集群原本的API Server开启aggregator routing功能后,两者就可以聚合同时对外提供API服务。
  • API Server要能访问metrics server pod IP,这个很好理解,因为集群原本的API服务是总出入口,相当于是metrics server的代理,两者必须能互访才行。

一、修改API Server的manifest文件

[root@master manifests]# vi /etc/kubernetes/manifests/kube-apiserver.yaml 
apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 192.168.52.131:6443
  creationTimestamp: null
  labels:
    component: kube-apiserver
    tier: control-plane
  name: kube-apiserver
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-apiserver
    - --advertise-address=192.168.52.131
    - --allow-privileged=true
    - --authorization-mode=Node,RBAC
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --enable-admission-plugins=NodeRestriction
    - --enable-bootstrap-token-auth=true
    - --enable-aggregator-routing=true
    - --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt

添加倒数第二行,修改完成后保存文件,API Server会自动重启。可以通过下面查看配置是否生效:ps -ef | grep apiserver

二、安装

下载metrics-server yaml配置文件,

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml

为了能顺利运行,需要对components.yaml做如下修改,

137c137
<         - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
---
>         - --kubelet-preferred-address-types=InternalIP
138a139
>         - --kubelet-insecure-tls

执行安装命令,kubectl apply -f componets.yaml

查看metrics-server服务状态,

[root@master metrics-server]# kubectl get pod -n kube-system | grep metrics-server
metrics-server-786c5886d4-rsc2v              1/1     Running   0                21m

最后,就可以顺利地执行命令kubectl top nodes和kubectl top pods了,

[root@master metrics-server]# kubectl top nodes
NAME                 CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master.k8s.xyz   635m         21%    1120Mi          65%       
node.k8s.xyz     117m         11%    486Mi           55%    
[root@master metrics-server]# kubectl top pods -A
NAMESPACE       NAME                                         CPU(cores)   MEMORY(bytes)          
kube-system     coredns-6d8c4cb4d-l6nbp                      5m           18Mi            
kube-system     coredns-6d8c4cb4d-pnvz8                      5m           23Mi            
kube-system     etcd-master.k8s.xyz                      67m          72Mi            
kube-system     kube-apiserver-master.k8s.xyz            226m         264Mi           
kube-system     kube-controller-manager-master.k8s.xyz   102m         65Mi            
kube-system     kube-flannel-ds-qn92f                        11m          26Mi            
kube-system     kube-flannel-ds-tbwx4                        5m           21Mi            
kube-system     kube-proxy-ks42r                             1m           29Mi            
kube-system     kube-proxy-lvlgs                             1m           29Mi            
kube-system     kube-scheduler-master.k8s.xyz            14m          24Mi            
kube-system     metrics-server-786c5886d4-rsc2v              9m           14Mi 

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表