نظرة عامة
kubectl هي واجهتك إلى عناقيد Kubernetes. تغطي هذه الورقة المرجعية الأوامر التي تستخدمها 90% من الوقت: فحص حالة العنقود، عرض الموارد، عرض ومتابعة السجلات، تشغيل الأوامر داخل الحاويات، port-forwarding، تطبيق البيانات الوصفية، وتصحيح الأخطاء. تم اختبار كل أمر على Kubernetes 1.30.
الخلاصة
# التبديل بين العنقود والتحقق من الوصول
kubectl config use-context <context>
kubectl cluster-info
# عرض الموارد (الإجابة 80/20)
kubectl get pods
kubectl get nodes
kubectl get all -n <namespace>
kubectl describe pod <name>
# السجلات والأوامر
kubectl logs <pod>
kubectl logs -f <pod>
kubectl exec -it <pod> -- bash
# النشر والتحديث
kubectl apply -f deployment.yaml
kubectl rollout status deployment/<name>
kubectl rollout undo deployment/<name>
# التحجيم والحذف
kubectl scale deployment/<name> --replicas=3
kubectl delete pod <name>
في هذه الصفحة نظرة عامة العنقود والإعدادات Get و Describe: عرض الموارد السجلات Exec والأوامر التفاعلية Port Forwarding Apply و Delete وإدارة البيانات الوصفية Rollout والتحديثات التحجيم وإدارة الموارد التصنيفات والمحددات التصحيح واستكشاف الأخطاء صيغ الإخراج العناقيد الأنماط التي ستعاد استخدامها الأسئلة الشائعة العنقود والإعدادات
الأمر
ما يفعله
مثال
kubectl config view
عرض ملف kubeconfig الحالي
kubectl config view
kubectl config use-context <ctx>
التبديل إلى سياق عنقود
kubectl config use-context prod
kubectl config current-context
طباعة السياق النشط
kubectl config current-context
kubectl config get-contexts
قائمة جميع السياقات المكونة
kubectl config get-contexts
kubectl config set-context <name> --cluster=<cluster> --user=<user>
إنشاء سياق جديد
kubectl config set-context dev --cluster=kind-dev --user=admin@kind-dev
kubectl cluster-info
عرض عنوان خادم API العنقود
kubectl cluster-info
kubectl auth can-i <verb> <resource>
التحقق مما إذا كان يمكنك تنفيذ إجراء
kubectl auth can-i create deployments --namespace prod
Get و Describe: عرض الموارد
الأمر
ما يفعله
مثال
kubectl get pods
قائمة الحاويات في العنقود الحالي
kubectl get pods
kubectl get pods -A
قائمة الحاويات في جميع العناقيد
kubectl get pods -A
kubectl get pods -n <ns>
قائمة الحاويات في عنقود معين
kubectl get pods -n prod
kubectl get nodes
قائمة عقد العنقود
kubectl get nodes
kubectl get services
قائمة الخدمات
kubectl get services أو kubectl get svc
kubectl get deployments
قائمة التطبيقات
kubectl get deploy
kubectl get statefulsets
قائمة StatefulSets
kubectl get statefulsets أو kubectl get sts
kubectl get daemonsets
قائمة DaemonSets
kubectl get ds
kubectl get jobs
قائمة المهام
kubectl get jobs
kubectl get cronjobs
قائمة CronJobs
kubectl get cronjobs
kubectl get pvc
قائمة مطالبات الحجم المستمر
kubectl get pvc
kubectl get ingress
قائمة موارد Ingress
kubectl get ingress
kubectl get all
قائمة جميع الموارد الشائعة في العنقود
kubectl get all
kubectl get all -A
قائمة جميع الموارد عبر جميع العناقيد
kubectl get all -A
kubectl describe pod <name>
عرض التفاصيل الكاملة للحاوية
kubectl describe pod web-abc123
kubectl describe node <name>
عرض تفاصيل العقدة والشروط
kubectl describe node node-1
kubectl describe svc <name>
عرض إعدادات الخدمة ونقاط النهاية
kubectl describe svc api
السجلات
الأمر
ما يفعله
مثال
kubectl logs <pod>
طباعة سجلات الحاوية إلى stdout
kubectl logs web-abc123
kubectl logs -f <pod>
بث السجلات بشكل مستمر (متابعة)
kubectl logs -f web-abc123
kubectl logs <pod> -c <container>
عرض السجلات من حاوية محددة
kubectl logs web-abc123 -c app
kubectl logs <pod> --previous
عرض السجلات من الحاوية السابقة (المتعطلة)
kubectl logs web-abc123 --previous
kubectl logs -l <label>
عرض السجلات من الحاويات التي تطابق التصنيف
kubectl logs -l app=web
kubectl logs <pod> --tail=50
عرض آخر 50 سطر فقط
kubectl logs web-abc123 --tail=50
kubectl logs <pod> --since=1h
عرض السجلات من آخر ساعة
kubectl logs web-abc123 --since=1h
kubectl logs <pod> -f -l <label>
بث السجلات من جميع الحاويات بتصنيف معين
kubectl logs -f -l app=web
Exec والأوامر التفاعلية
الأمر
ما يفعله
مثال
kubectl exec -it <pod> -- bash
فتح shell bash في حاوية
kubectl exec -it web-abc123 -- bash
kubectl exec -it <pod> -- sh
فتح shell (يعمل في الصور الصغيرة)
kubectl exec -it web-abc123 -- sh
kubectl exec -it <pod> -c <container> -- bash
Exec في حاوية محددة في حاوية متعددة
kubectl exec -it web-abc123 -c app -- bash
kubectl exec <pod> -- <command>
تشغيل أمر بدون وضع تفاعلي
kubectl exec web-abc123 -- ps aux
kubectl exec -it <pod> -- /bin/bash --user=1000
Exec كمستخدم مختلف (UID)
kubectl exec -it web-abc123 -- bash --user=1000
Port Forwarding
الأمر
ما يفعله
مثال
kubectl port-forward pod/<name> 8080:8080
إعادة توجيه المنفذ المحلي 8080 إلى المنفذ 8080 في الحاوية
kubectl port-forward pod/web-abc123 8080:8080
kubectl port-forward svc/<name> 5432:5432
إعادة التوجيه إلى خدمة (الاتصال بأي حاوية تدعمها)
kubectl port-forward svc/database 5432:5432
kubectl port-forward pod/<name> 9000:8080
إعادة توجيه المنفذ المحلي 9000 إلى المنفذ 8080 في الحاوية
kubectl port-forward pod/app 9000:8080
kubectl port-forward <pod> 0:8080
تعيين منفذ محلي عشوائي
kubectl port-forward app 0:8080
kubectl port-forward pod/<name> 8080:8080 --address 0.0.0.0
السماح للعملاء الخارجيين بالاتصال (وليس فقط localhost)
kubectl port-forward pod/api 8080:8080 --address 0.0.0.0
Apply و Delete وإدارة البيانات الوصفية
الأمر
ما يفعله
مثال
kubectl apply -f <file.yaml>
إنشاء أو تحديث موارد من البيانات الوصفية
kubectl apply -f deployment.yaml
kubectl apply -f <dir>/
تطبيق جميع ملفات YAML في مجلد
kubectl apply -f manifests/
kubectl apply -f <url>
تطبيق البيانات الوصفية من عنوان URL
kubectl apply -f https://example.com/config.yaml
kubectl apply --dry-run=client -f <file>
معاينة ما سيتم تطبيقه دون إجراء تغييرات
kubectl apply --dry-run=client -f deployment.yaml
kubectl apply --dry-run=server -f <file>
اختبار جانب الخادم (التحقق من webhook)
kubectl apply --dry-run=server -f deployment.yaml
kubectl delete pod <name>
حذف حاوية
kubectl delete pod web-abc123
kubectl delete -f <file.yaml>
حذف جميع الموارد في البيانات الوصفية
kubectl delete -f deployment.yaml
kubectl delete <resource-type> -l <label>
حذف الموارد التي تطابق التصنيف
kubectl delete pods -l app=web
kubectl delete <resource-type> --all
حذف جميع الموارد من نوع معين في العنقود الحالي
kubectl delete pods --all
kubectl delete <resource-type> --all -A
حذف جميع الموارد من نوع معين عبر جميع العناقيد
kubectl delete pods --all -A
Rollout والتحديثات
الأمر
ما يفعله
مثال
kubectl rollout status deployment/<name>
مراقبة تقدم الإصدار
kubectl rollout status deployment/web
kubectl rollout history deployment/<name>
عرض سجل المراجعات
kubectl rollout history deployment/web
kubectl rollout undo deployment/<name>
العودة إلى المراجعة السابقة
kubectl rollout undo deployment/web
kubectl rollout undo deployment/<name> --to-revision=3
العودة إلى مراجعة محددة
kubectl rollout undo deployment/web --to-revision=3
kubectl set image deployment/<name> <container>=<new-image>
تحديث صورة الحاوية
kubectl set image deployment/web web=nginx:1.26 && kubectl annotate deployment/web kubernetes.io/change-cause="nginx 1.26"
kubectl patch deployment/<name> -p '{"spec":{"replicas":5}}'
تصحيح موارد مضمّنة
kubectl patch deployment/web -p '{"spec":{"replicas":5}}'
التحجيم وإدارة الموارد
الأمر
ما يفعله
مثال
kubectl scale deployment/<name> --replicas=3
تحجيم التطبيق إلى عدد من النسخ
kubectl scale deployment/web --replicas=3
kubectl scale statefulset/<name> --replicas=5
تحجيم StatefulSet
kubectl scale statefulset/db --replicas=5
kubectl top nodes
عرض استخدام CPU والذاكرة حسب العقدة (يتطلب metrics-server)
kubectl top nodes
kubectl top pod
عرض استخدام CPU والذاكرة حسب الحاوية
kubectl top pod
kubectl top pod -l <label>
عرض الاستخدام للحاويات بتصنيف معين
kubectl top pod -l app=web
التصنيفات والمحددات
الأمر
ما يفعله
مثال
kubectl label pod <name> <key>=<value>
إضافة تصنيف إلى حاوية
kubectl label pod web-abc tier=frontend
kubectl label pod <name> <key>=<value> --overwrite
تحديث تصنيف موجود
kubectl label pod web-abc tier=backend --overwrite
kubectl label pod <name> <key>-
إزالة تصنيف من حاوية
kubectl label pod web-abc tier-
kubectl label nodes <node> <key>=<value>
تسمية عقدة
kubectl label nodes node-1 disktype=ssd
kubectl get pods -l <key>=<value>
الحصول على حاويات تطابق التصنيف
kubectl get pods -l app=web
kubectl get pods -l <key>!=<value>
الحصول على حاويات حيث لا يطابق التصنيف
kubectl get pods -l app!=db
kubectl get pods -l '<key> in (val1, val2)'
الحصول على حاويات حيث التصنيف في قائمة
kubectl get pods -l 'tier in (frontend, backend)'
التصحيح واستكشاف الأخطاء
الأمر
ما يفعله
مثال
kubectl describe pod <name>
عرض الأحداث وحالة الحاوية
kubectl describe pod web-abc123
kubectl get events -n <namespace>
قائمة أحداث العنقود الأخيرة
kubectl get events -n prod
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
ترتيب الأحداث حسب الوقت
kubectl get events -n prod --sort-by='.lastTimestamp'
kubectl debug pod/<name>
بدء حاوية تصحيح في عنقود الحاوية (Kubernetes 1.16+)
kubectl debug pod/web-abc123
kubectl debug pod/<name> -it --image=busybox
تصحيح الحاوية بصورة محددة
kubectl debug pod/app -it --image=busybox
kubectl logs <pod> --previous
عرض السجلات من حاوية متعطلة
kubectl logs web-abc123 --previous
kubectl top pod <name>
عرض CPU والذاكرة من حاوية محددة
kubectl top pod web-abc123
kubectl api-resources
قائمة جميع أنواع الموارد المتاحة في العنقود
kubectl api-resources
kubectl get pod/<name> -o yaml
تصدير تعريف الحاوية كـ YAML
kubectl get pod/web-abc123 -o yaml
صيغ الإخراج
الأمر
ما يفعله
مثال
kubectl get pods -o yaml
الإخراج كـ YAML
kubectl get pods -o yaml
kubectl get pods -o json
الإخراج كـ JSON
kubectl get pods -o json
kubectl get pods -o wide
تضمين أعمدة إضافية (عقدة، عنوان IP، إلخ)
kubectl get pods -o wide
kubectl get pods -o name
إخراج أسماء الموارد فقط
kubectl get pods -o name
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
استخراج حقول محددة بـ JSONPath
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase
تعريف أعمدة مخصصة
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,IMAGE:.spec.containers[0].image
kubectl get pods --no-headers
إخفاء صف الرأس
kubectl get pods --no-headers
kubectl get pods -L tier,app
عرض قيم التصنيفات المحددة كأعمدة
kubectl get pods -L tier,app
العناقيد
الأمر
ما يفعله
مثال
kubectl get ns
قائمة جميع العناقيد
kubectl get ns
kubectl create namespace <name>
إنشاء عنقود
kubectl create namespace prod
kubectl delete namespace <name>
حذف عنقود (وجميع الموارد فيه)
kubectl delete namespace staging
kubectl config set-context --current --namespace=<namespace>
تعيين عنقود افتراضي للسياق الحالي
kubectl config set-context --current --namespace=prod
kubectl get pods -n <namespace>
الاستعلام عن عنقود محدد
kubectl get pods -n prod
kubectl get pods -A
الاستعلام عن جميع العناقيد في وقت واحد
kubectl get pods -A
الأنماط التي ستعاد استخدامها
# مراقبة إصدار التطبيق في الوقت الفعلي
kubectl rollout status deployment/<name> --watch
# الحصول على YAML من الموارد قيد التشغيل للتحرير
kubectl get deployment/<name> -o yaml | vim - | kubectl apply -f -
# البحث عن حاويات في حالة فشل
kubectl get pods --field-selector=status.phase!=Running
# الحصول على جميع الأحداث في العنقود مرتبة حسب الوقت
kubectl get events -A --sort-by='.lastTimestamp'
# بث السجلات من حاويات متعددة بتصنيف معين
kubectl logs -f -l app=<label> --all-containers=true --max-log-requests=10
# عرض وتعديل حدود الموارد
kubectl set resources deployment/<name> --limits=cpu=500m,memory=512Mi --requests=cpu=250m,memory=256Mi
# الحصول على عنوان IP للخدمة
kubectl get svc <name> -o jsonpath='{.spec.clusterIP}'
# تصدير بيانات وصفية للحاوية إلى ملف للنسخ الاحتياطي
kubectl get pod/<name> -o yaml > backup.yaml
الأسئلة الشائعة
كيف أنتقل بين سياقات Kubernetes المختلفة؟
شغّل kubectl config use-context <context-name> للتبديل. اعرض السياقات المتاحة مع kubectl config get-contexts. اعرض السياق الحالي عبر kubectl config current-context.
ما الفرق بين apply و create؟
أمر create يفشل إذا كانت الموارد موجودة؛ apply ينشئ أو يحدّث. استخدم apply في الإنتاج حتى تتمكن من إعادة تشغيل البيانات الوصفية الخاصة بك بأمان. لتتبع سبب حدوث الإصدار، عيّن حاشية kubernetes.io/change-cause (العلم --record القديم تم حذفه).
كيف أتتبع السجلات من حاوية؟
استخدم kubectl logs -f <pod> للسجلات المباشرة من حاوية واحدة، أو kubectl logs -f -l app=myapp لتتبع السجلات من جميع الحاويات التي تطابق التصنيف. أضف --previous لرؤية السجلات من حاوية متعطلة.
هل يمكنني تنفيذ أمر داخل حاوية قيد التشغيل؟
نعم: kubectl exec -it <pod> -- /bin/bash (أو sh للصور الصغيرة). بالنسبة للحاويات متعددة الحاويات، حدّد الحاوية: kubectl exec -it <pod> -c <container> -- bash. استخدم --user للتشغيل كمستخدم مختلف.
كيف أقوم بـ port-forward من حاوية؟
شغّل kubectl port-forward <pod> 8080:8080 لإعادة توجيه المنفذ المحلي 8080 إلى المنفذ 8080 في الحاوية. استخدم --address 0.0.0.0 للسماح بالوصول البعيد. للخدمات: kubectl port-forward svc/<service> 5432:5432.
كيف تم التحقق من هذا الدليل كُتب يدويًا من الوثائق الرسمية، وأُعيد فحص كل أمر، ثم رُوجع مرة ثانية قبل النشر. آخر مراجعة في 27 أكتوبر 2026 .
المصادر الرسمية التي قُرئت لهذا المقال