نظرة عامة

kubectl هي واجهتك إلى عناقيد Kubernetes. تغطي هذه الورقة المرجعية الأوامر التي تستخدمها 90% من الوقت: فحص حالة العنقود، عرض الموارد، عرض ومتابعة السجلات، تشغيل الأوامر داخل الحاويات، port-forwarding، تطبيق البيانات الوصفية، وتصحيح الأخطاء. تم اختبار كل أمر على Kubernetes 1.30.

العنقود والإعدادات

الأمر ما يفعله مثال
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.

كيف تم التحقق من هذا الدليل

كُتب يدويًا من الوثائق الرسمية، وأُعيد فحص كل أمر، ثم رُوجع مرة ثانية قبل النشر. آخر مراجعة في .

المصادر الرسمية التي قُرئت لهذا المقال

شاركها.

التعليقات مغلقة.