المختبر 2.2 - تحليل Worker Nodes
الأهداف
في نهاية هذا المختبر، ستكون قادرًا على:
- فحص Worker Nodes
- فهم دور kubelet
- تحليل kube-proxy
- فحص Container Runtime
المتطلبات الأساسية
- عنقود Kubernetes يعمل بشكل صحيح
- تم تثبيت وتكوين kubectl
- الوصول إلى العنقود
التمرين 1: فحص Nodes
الخطوة 1: قائمة Nodes
# عرض جميع nodes
kubectl get nodes
# عرض تفاصيل node
kubectl describe node <node-name>
# عرض nodes مع مزيد من المعلومات
kubectl get nodes -o wide
السؤال: كم عدد Worker Nodes لديك؟ ما هي أدوارهم؟
الخطوة 2: معلومات Node
# عرض تسميات node
kubectl get node <node-name> --show-labels
# عرض التعليقات التوضيحية
kubectl get node <node-name> -o jsonpath='{.metadata.annotations}'
التمرين 2: تحليل kubelet
الخطوة 1: التحقق من kubelet
# عرض Pods النظام المرتبطة بـ kubelet
kubectl get pods -n kube-system | grep kubelet
# عرض أحداث node
kubectl get events --field-selector involvedObject.name=<node-name>
الخطوة 2: مقاييس Node
# عرض استخدام الموارد لـ node
kubectl top node <node-name>
# عرض تفاصيل الموارد
kubectl describe node <node-name> | grep -A 10 "Allocated resources"
التمرين 3: تحليل kube-proxy
الخطوة 1: التحقق من kube-proxy
# عرض Pod kube-proxy
kubectl get pods -n kube-system -l k8s-app=kube-proxy
# عرض سجلات kube-proxy
kubectl logs -n kube-system -l k8s-app=kube-proxy --tail=50
الخطوة 2: التحقق من الخدمات
# قائمة جميع الخدمات
kubectl get services --all-namespaces
# عرض Endpoints لخدمة
kubectl get endpoints <service-name>
التمرين 4: Container Runtime
الخطوة 1: تحديد Runtime
# عرض معلومات node (تحتوي على runtime)
kubectl describe node <node-name> | grep "Container Runtime"
# عرض الصور المستخدمة
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' | sort -u
التمرين 5: Pods على Node
الخطوة 1: Pods المعينة
# عرض جميع Pods على node محدد
kubectl get pods --all-namespaces --field-selector spec.nodeName=<node-name>
# عدّ Pods حسب node
kubectl get pods --all-namespaces -o wide | awk '{print $7}' | sort | uniq -c
الخطوة 2: الموارد المستخدمة
# عرض استخدام الموارد حسب Pod
kubectl top pods --all-namespaces
# التصفية حسب node
kubectl top pods --all-namespaces | grep <node-name>
أسئلة للتفكير
- كم عدد Pods التي يمكن تشغيلها على كل node؟
- كيف يدير kubelet الموارد؟
- ما هو دور kube-proxy على كل node؟
- كيف يتم استخدام Container Runtime؟
التنظيف
لا حاجة للتنظيف.
الخطوات التالية
المختبر 2.3: مراقبة مكونات النظام
الوحدة 3: Pods والنشر
تم إنشاء المختبر في: ديسمبر 2024