k8s 中集羣指標 metrics server 部署

metrics server 用以監控k8s集羣中每一個 pod 與 node 的 CPU/Memory 使用狀況。另外,正由於它可以監控 CPU/Memory 它也被用做彈性擴容。html

參考

先上兩篇官方文檔做爲參考,強烈建議閱讀第二篇前端

  1. Resource metrics pipeline
  2. Kubernetes monitoring architecture

這裏有一張從第二篇文章中抽出來的監控架構圖node

monitoring architecture

部署

能夠直接使用官方寫好的配置文件進行部署: kubernetes-incubator/metrics-serverlinux

這裏也有一個鏡像須要在代理節點下載並使用 rsync 移動到 work node:k8s.gcr.io/metrics-server-amd64:v0.3.6。詳細方法參照 [](kubectl create -f deploy/1.8+/) 若是採用代理節點下載並移動的方案進行部署,則須要設置 image 的 imagePullPolicy: IfNotPresentgit

如下是關於 metrics server 的安裝步驟github

$ git clone git@github.com:kubernetes-incubator/metrics-server.git
 # 切換至 v0.3.6 版本
$ cd metrics-server && git checkout v0.3.6
 # 建立資源,注意在此以前拉取鏡像須要設置代理,或者在代理機上準備好並複製過來
# 再要注意,若是使用代理節點下載而且複製的方案進行部署,須要刪除 metrics-server-deployment.yaml 中關於 imagePullPolicy 的一行
$ sed -i '/imagePullPolicy: Always/d' deploy/1.8+/metrics-server-deployment.yaml
 # 添加兩個參數
$ sed -i '/image: k8s.gcr.io/a \ args: [ "--kubelet-insecure-tls", "--kubelet-preferred-address-types=InternalIP"]' deploy/1.8+/metrics-server-deployment.yaml
 $ kubectl apply -f deploy/1.8+/
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
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
deployment.extensions/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
 # 獲取全部 pod,查看 metrc-server 此時處於運行狀態
$ kubectl get pods --all-namespaces | grep metrics
kube-system   metrics-server-7fbb854b45-zsc5s                  1/1     Running   0          64s
複製代碼

部署成功後,能夠使用 kubectl top nodes面試

$ kubectl top nodes
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
shanyue    114m         5%     2327Mi          63%
shuifeng   32m          1%     2379Mi          15%
複製代碼

error: metrics not available yet

部署過程有可能出現錯誤 error: metrics not available yet,能夠參考該 Issueshell

此時能夠添加兩個參數 --kubelet-insecure-tls--kubelet-preferred-address-types=InternalIP 來避免問題前端工程化

spec:
 selector:
 matchLabels:
 k8s-app: metrics-server
 template:
 metadata:
 name: metrics-server
 labels:
 k8s-app: metrics-server
 spec:
 serviceAccountName: metrics-server
 volumes:
 - name: tmp-dir
 emptyDir: {}
 containers:
 - name: metrics-server
 image: k8s.gcr.io/metrics-server-amd64:v0.3.6
       # 添加兩個參數避免此類問題
 args: [ "--kubelet-insecure-tls", "--kubelet-preferred-address-types=InternalIP"]
 volumeMounts:
 - name: tmp-dir
 mountPath: /tmp
複製代碼

能夠直接使用 sed 命令直接修改文件,關於 sed 能夠參考 sed 命令詳解api

# -i 表明直接替換文件
# a 表明下一行插入 (i 表明上一行插入)
$ sed -i '/image: k8s.gcr.io/a \ args: [ "--kubelet-insecure-tls", "--kubelet-preferred-address-types=InternalIP"]' deploy/1.8+/metrics-server-deployment.yaml
複製代碼

我是山月,你能夠添加我微信 shanyue94 與我交流

若是你對全棧面試,前端工程化,graphql,devops,我的服務器運維以及微服務感興趣的話,能夠關注我
相關文章
相關標籤/搜索