ติดตั้ง kube-state-metrics บน Kubernetes20 December 2018DevOps

ติดตั้ง kube-state-metrics บน Kubernetes

Version ตอนเขียนบทความ
kubernetes version 1.11
kube-state-metrics version 1.14.0

kube-state-metrics คือเซอร์วิสตัวหนึ่งที่ไว้เก็บค่าต่างๆ ของ kubernetes เช่น deployment, pod, nodes ประโยชน์ของมันก็คือเพื่อส่งต่อค่าพวกนี้ไปยังพวกระบบ monitoring ต่างๆ เช่น Prometheus เป็นต้น หากใครต้องการดูแลระบบของ k8s ก็ต้องมีเจ้าตัวนี้ละมาช่วย

ผมได้ใช้เวลาตบตีกับมันในการติดตั้งนานพอสมควร เลยอยากแชร์วิธีการเอาไว้สักหน่อย จริงๆ มันติดตั้งง่ายๆ โครต แต่พอดีผมใช้งานอยู่บน Google Kubernetes Engine (GKE) เลยจะมีเรื่องสิทธิ์ RBAC มาเกี่ยวด้วย

สำหรับใครที่ใช้งานบน GKE ต้องทำขั้นตอนนี้ก่อน

⚡ kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=<gcloud_mail>
  • <gcloud_mail> คืออีเมลที่เป็นเจ้าของโปรเจ็คนะครับ โดยสามารถดูได้จาก https://console.cloud.google.com/iam-admin/iam?authuser=1&project=PROJECT_ID เช่น [email protected]

ในส่วนนี้จะต้องเป็น case sensitive ด้วยนะ กล่าวคือตัวอักษรใหญ่หรือเล็กต้องตรงกันหมด ผมโดนมาละ ไปใส่อีเมลตัวเล็กหมด เวลาสร้าง kube-state-metrics มันจะ error

gke-permission

ตรวจสอบสักหน่อยว่าค่าถูกต้อง

⚡ kubectl describe clusterrolebinding cluster-admin-binding
Name:         cluster-admin-binding
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  cluster-admin
Subjects:
  Kind  Name                      Namespace
  ----  ----                      ---------
  User  [email protected]  

โหลด repo kube-state-metrics มาก่อน

⚡ git clone https://github.com/kubernetes/kube-state-metrics.git

ติดตั้งผ่าน kubectl

⚡ cd kube-state-metrics
⚡ kubectl create -f kubernetes/

เพียงเท่านี้ก็น่าจะได้ละ

ทดสอบเรียกใช้งาน

⚡ kubectl -n kube-system port-forward svc/kube-state-metrics 8080:8080

ลอง http://localhost:8080/metrics ก็จะได้ค่าของระบบยาวๆ อออก

หรือ http://localhost:8080/healthz จะแสดงว่า ok เป็นอันใช้ได้

kube-state-metrics-output
ค่าที่แสดงออกมา
ก่อนหน้า
ถัดไป