介紹
Metrics Server是Kubernetes內(nèi)置自動縮放管道的可擴展蒿讥,高效的容器資源指標來源。
Metrics Server從Kubelet收集資源指標,并通過Metrics API在Kubernetes apiserver中公開它們, 以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler使用箍铲。也可以通過訪問Metrics API kubectl top
,從而更輕松地調(diào)試自動縮放管道鬓椭。
Metrics Server并非用于非自動縮放目的颠猴。例如,請勿將其用于將指標轉(zhuǎn)發(fā)到監(jiān)視解決方案小染,也不要將其用作監(jiān)視解決方案指標的來源翘瓮。
Metrics Server提供:
- 適用于大多數(shù)集群的單個部署(請參閱需求)
- 可擴展支持多達5,000個節(jié)點集群
- 資源效率:Metrics Server使用0.5m的CPU核心,每個節(jié)點使用4 MB的內(nèi)存
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
添加參數(shù)
[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會監(jiān)聽這個yaml文件的變化修改這個文件后kubelet會將自動終止原有的 kube-apiserver的 Pod岛都,并自動創(chuàng)建一個使用了新配置參數(shù)的 Pod 作為替代
2,metrics-server部署
官方下載
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
替換國內(nèi)鏡像源地址:
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
配置
根據(jù)您的群集設(shè)置振峻,您可能還需要更改傳遞到Metrics Server容器的標志
--kubelet-preferred-address-types -確定連接到特定節(jié)點的地址時使用的節(jié)點地址類型的優(yōu)先級(默認[主機名臼疫,內(nèi)部DNS,內(nèi)部IP扣孟,外部DNS烫堤,外部IP])
--kubelet-insecure-tls -不要驗證Kubelets提供的服務(wù)證書的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%