metrics-server部署

介绍

Metrics Server是Kubernetes内置自动缩放管道的可扩展,高效的容器资源指标来源。

Metrics Server从Kubelet收集资源指标,并通过Metrics API在Kubernetes apiserver中公开它们, 以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler使用。也可以通过访问Metrics API kubectl top,从而更轻松地调试自动缩放管道。

Metrics Server并非用于非自动缩放目的。例如,请勿将其用于将指标转发到监视解决方案,也不要将其用作监视解决方案指标的来源。

Metrics Server提供:

  • 适用于大多数集群的单个部署(请参阅需求)
  • 可扩展支持多达5,000个节点集群
  • 资源效率:Metrics Server使用0.5m的CPU核心,每个节点使用4 MB的内存

1,修改配置

检查 API Server 是否开启了 Aggregator Routing:查看 API Server 是否具有 --enable-aggregator-routing=true 选项。

[root@k8s-master ~]# ps -ef |grep apiserver|grep true
root      13955  13928  4 14:43 ?        00:00:18 kube-apiserver --advertise-address=10.0.0.11 --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 --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key --etcd-servers=https://127.0.0.1:2379 --insecure-port=0 --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-key-file=/etc/kubernetes/pki/sa.pub --service-cluster-ip-range=10.96.0.0/12 --tls-cert-file=/etc/kubernetes/pki/apiserver.crt --tls-private-key-file=/etc/kubernetes/pki/apiserver.key

添加参数

[root@k8s-master ~]# grep -A 10  command /etc/kubernetes/manifests/kube-apiserver.yaml 
  - command:
    - kube-apiserver
    - --advertise-address=10.0.0.11
    - --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
    - --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt

kubeadm部署的在/etc/kubernetes/manifests/kube-apiserver.yaml这里修改,kubelet会监听这个yaml文件的变化修改这个文件后kubelet会将自动终止原有的 kube-apiserver的 Pod,并自动创建一个使用了新配置参数的 Pod 作为替代

2,metrics-server部署

官方下载
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml 
替换国内镜像源地址:
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
配置

根据您的群集设置,您可能还需要更改传递到Metrics Server容器的标志

--kubelet-preferred-address-types     -确定连接到特定节点的地址时使用的节点地址类型的优先级(默认[主机名,内部DNS,内部IP,外部DNS,外部IP])
--kubelet-insecure-tls                -不要验证Kubelets提供的服务证书的CA。仅用于测试目的。
--requestheader-client-ca-file        -指定根证书捆绑包,以验证传入请求上的客户端证书。
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          - --kubelet-insecure-tls
          - --kubelet-preferred-address-types=InternalIP 

部署metrics-server

kubectl apply -f components.yaml
root@master:~# kubectl get pods -n kube-system  metrics-server-5f49885b47-xbxp6 
NAME                              READY   STATUS    RESTARTS   AGE
metrics-server-5f49885b47-xbxp6   1/1     Running   0          40m
root@master:~# kubectl top pods -A
NAMESPACE      NAME                              CPU(cores)   MEMORY(bytes)   
default        counter                           1m           2Mi             
default        front-end-6b7b5c4bfc-8jhfr        0m           2Mi             
default        front-end-6b7b5c4bfc-gv5xr        0m           2Mi             
default        front-end-6b7b5c4bfc-qs7tg        0m           2Mi             
default        front-end-6b7b5c4bfc-sxdr7        0m           2Mi             
default        front-end-6b7b5c4bfc-tgksv        0m           2Mi             
default        front-end-6b7b5c4bfc-tm9sc        0m           2Mi             
default        nginx                             6m           23Mi            
default        nginx-kusc00401                   0m           3Mi             
ing-internal   nginx                             0m           3Mi             
kube-system    coredns-6d56c8448f-khkkh          3m           9Mi             
kube-system    coredns-6d56c8448f-nw4zl          2m           9Mi             
kube-system    etcd-master                       11m          36Mi            
kube-system    kube-apiserver-master             22m          295Mi           
kube-system    kube-controller-manager-master    7m           48Mi            
kube-system    kube-flannel-ds-9l9gb             1m           13Mi            
kube-system    kube-flannel-ds-vrxft             1m           12Mi            
kube-system    kube-flannel-ds-w7nsw             2m           12Mi            
kube-system    kube-proxy-8vmp8                  1m           13Mi            
kube-system    kube-proxy-9vs7k                  1m           13Mi            
kube-system    kube-proxy-pprw8                  1m           13Mi            
kube-system    kube-scheduler-master             2m           17Mi            
kube-system    metrics-server-5f49885b47-xbxp6   1m           12Mi      
root@master:~# kubectl top node
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   101m         2%     2244Mi          29%       
node1    66m          1%     1264Mi          16%       
node2    75m          1%     1284Mi          16%    

你可能感兴趣的:(metrics-server部署)