معظم النصائح التالية تعتمد على kubectl، الأداة القوية لسطر الأوامر التي تُتيح لك تنفيذ الأوامر على مجموعات Kubernetes.
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دومًا بأهم—اتجاهات المجال وأكثرها إثارة للفضول—بشأن الذكاء الاصطناعي والأتمتة والبيانات وغيرها الكثير مع نشرة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيتم تسليم اشتراكك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك هنا. راجع بيان خصوصية IBM لمزيد من المعلومات.
إذا كنت بحاجة إلى بعض المعلومات الأساسية عن Kubernetes قبل الانتقال إلى هذه النصائح، فراجِع الموارد التالية:
يمكنك تقسيم مجموعة Kubernetes إلى بيئات متعددة باستخدام المساحات الاسمية (مثل Dev1 وDev2 وQA1 وQA2 وغيرها)، ويمكن إدارة كل بيئة بواسطة مستخدم مختلف. من أبرز الصعوبات عند كتابة أوامر kubectl هو أنه في كل مرة تكتب فيها أمرًا، تحتاج إلى خيار --مساحة اسمية
في النهاية. غالبًا ما ينسى الناس ذلك وينتهي بهم الأمر بإنشاء الكائنات (الحجيرات والخدمات وعمليات النشر) في المساحة الاسمية الخطأ.
باستخدام هذه الحيلة، يمكنك تحديد تفضيل المساحة الاسمية قبل تنفيذ أوامر kubectl. شغِّل الأمر التالي قبل تنفيذ أوامر kubectl، وسيتم حفظ المساحة الاسمية لجميع أوامر kubectl التالية في السياق الحالي:
kubectl config set-context $(kubectl config current-context) --namespace=mynamespace
فيما يلي بعض أكثر أوامر المساحة الاسمية شيوعًا وفائدة:
يمكن أن تكون أوامر Kubernetes طويلة نسبيًا، لذا فإن إعداد بعض الاختصارات لتشغيل kubectl مفيد جدًا. لن تحتاج بعد الآن إلى لكتابة الأمر بالكامل مرارًا وتكرارًا، ما يجعل التعامل مع عدة أوامر Kubernetes في جلسة واحدة أسهل بكثير.
فيما يلي اختصارات لبعض الأوامر المستخدمة بشكل متكرر. نفِّذ هذه الأوامر قبل تشغيل أوامر kubectl لتوفير بعض الوقت. مثال: ما عليك سوى الكتابة K بدلًا من كتابة kubectl:
هناك العديد من أدوات التحرير المتاحة لكتابة ملفات YAML، لكن في كثير من الأحيان قد تحتاج إلى تعديل سريع لملف YAML تم إنشاؤه أثناء العمل على وحدة طرفية. هنا يُعَد استخدام محرر النصوص الموثوق به vi، الذي تم إنشاؤه أصلًا لنظام Unix، خيارًا ممتازًا.
محرر vi موثَّق جيدًا ويحظى بدعم قوي من مجتمع المصادر المفتوحة النشط. إحدى المشكلات في محرر vi عند إنشاء ملفات YAML هي مسألة المسافات. نحتاج إلى طريقة لوضع المسافات البادئة باستخدام علامات التبويب والمواءمة مع المسافات. استخدام علامات التبويب مقابل المسافات للمسافات البادئة تسبب دائمًا في حدوث مشكلات في بناء الجمل عند كتابة ملفات YAML (مثل الحصول على مسافتين كإعداد افتراضي عند الضغط على Enter).
ما الحل؟ إنشاء ملف ~/.vimrc بهذه الأسطر قبل كتابة ملفات YAML باستخدام محرر vi لتسهيل عملية التحرير:
يمكننا إنشاء ملفات YAML معقدة من سطر الأوامر باستخدام أوامر kubectl.
يتفق معظم الأشخاص على أن العمل باستخدام ملفات YAML ليس ممتعًا، ويمكن أن تكون ملفات Kubernetes YAML مطولة جدًا ويصعب إنشاؤها من البداية. من الأسهل بكثير إنشاء ملف YAML من أوامر kubectl بدلًا من إنشاء صفحة فارغة باستخدام محرر.
ستعمل الأوامر التالية على إنشاء ملف YAML بالاسم yamlfile . بمجرد إنشاء ملف YAML من أوامر kubectl هذه، يمكنك تعديله بناءً على متطلباتك واستخدامه بدلًا من الكتابة من الصفر:
kubectl run busybox --image=busybox --dry-run=client -o yaml -- restart=Never > yamlfile.yaml
kubectl create job my-job --dry-run=client -o yaml --image=busybox -- date>yamlfile.yaml
kubectl get -o yaml deploy/nginx > 1.yaml(Ensure that you have a deployment named as nginx)
kubectl run busybox --image=busybox --dry-run=client -o yaml --restart=Never -- /bin/sh -c "while true; do echo hello; echo hello again;done" > yamlfile.yaml
kubectl run wordpress --image=wordpress –-expose –-port=8989 - -restart=Never -o yaml
kubectl run test --image=busybox --restart=Never --dry - run=client -o yaml -- bin/sh -c 'echo test;sleep 100' > yamlfile.yaml (لاحِظ أن --bin تأتي في النهاية. سيؤدي هذا إلى إنشاء ملف yaml).
(لاحِظ أن --bin تأتي في النهاية. سيؤدي هذا إلى إنشاء ملف yaml).
هناك فكرة جيدة أخرى لإنشاء ملف YAML وهي الحصول على الملف مباشرةً من الإنترنت باستخدام الأمر wget .
في النصيحة 1، تعلَّمنا بعض الأوامر المفيدة لاستخدام مساحات Kubernetes الاسمية وحفظها حتى لا تضطر إلى إضافتها إلى كل أمر. دعنا نوسِّع النصيحة لتسهيل التبديل بين المساحات الاسمية وسياقات kubectl.
هناك العديد من الأدوات التي يمكن أن تساعد، لكننا نفضل استخدام kubectx لإدارة السياقات وkubens لإدارة المساحات الاسمية. يمكنك العثور على تفاصيل حول kubectx وkubens هنا.
إليك طريقة تنزيل ملفات النسخ التنفيذية لنظام Linux لكلٍّ من kubectx وkubens:
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubectx_v0.9.0_linux_x86_64.tar.gz
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubens_v0.9.0_linux_x86_64.tar.gz
ثم تستخرجها باستخدام الأوامر التالية:
tar -xvf kubectx_v0.9.0_linux_x86_64.tar.gz
tar -xvf kubens_v0.9.0_linux_x86_64.tar.gz
أخيرًا، انقلها إلى مسار PATH الخاص بك:
بمجرد التثبيت، يمكنك ببساطة استخدام kubens لإدراج المساحات الاسمية والتبديل بينها:
عند العمل مع عدة مجموعات، يجعل kubectx التبديل بين السياقات سهلًا:
هل تعلم أن kubectl يوفر ميزة الإكمال التلقائي لإصدارَي BASH وZSH؟ هذا التكوين اختياري.
لنفترض أنك تعرف مفاهيم Kubernetes ولديك بعض التجربة في استخدام kubectl، ولكن ربما لا تجيد حفظ الأوامر. أولًا تقوم بتثبيت إكمال bash، ثم تمكين الإكمال التلقائي لأوامر kubectl. يمكنك العثور على جميع التفاصيل في صفحة الوثائق "تثبيت وإعداد kubectl" الخاصة بالبيئة.
فيما يلي خيارات التكوين مع ميزة الإكمال التلقائي:
الآن، اضغط على Tab واستمتِع بالإكمال التلقائي!
يُعَد الأمر top من أكثر الأدوات شهرة لمراقبة العمليات وموارد النظام. ويوفر واجهة بسيطة تعتمد على الأحرف وإمكانية الوصول السريع إلى المعلومات الأساسية.
يمكنك أن ترى استخدام الموارد لكل عقدة:
استخدام الموارد لكل حجيرة:
وأمر watch المفيد يُتيح لك عرض نتيجة أي أمر على فترات زمنية محددة دون الحاجة إلى تشغيله مرارًا وتكرارًا. المثال التالي يوضح كيفية تشغيله كل خمس ثوانٍ (الافتراضي هو ثانيتان):
watch kubectl top node -n 5
ملاحظة: يجب تنزيل أمر watch ليناسب بيئتك.
تحتاج أيضًا مجموعة Kubernetes الخاصة بك إلى تشغيل Heapster لكي يعمل أمر top، وإلا ستظهر لك الرسالة التالية: "Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)".
يوفر أمر kubectl عرضًا مختصرًا للموارد المخزنة لدى apiserver. هناك العديد من الحقول الأخرى المخزنة لدى apiserver والتي لا يتم عرضها. يمكنك استخدام الأمر kubectl get مع مخرجات الموارد الأولية لإنشاء التصور والأوامر الخاصة بك.
يمكنك طباعة الموارد الأولية بتنسيق JSON باستخدام الأمر التالي:
kubectl get deployments -o json
يمكنك أيضًا استدعاء الموارد مباشرةً باستخدام استدعاء API:
kubectl get --raw=/apis/apps/v1/deployments
يمكنك أيضًا دمج المخرجات مع أدوات مثل jq لتقديم تصورات مختلفة، أو تصفية النتائج، أو تمريرها إلى أدوات أخرى لأتمتة متقدمة.
على سبيل المثال، قد يكون من الصعب اكتشاف المشكلات في المجموعات التي تحتوي على عدة مساحات اسمية وعمليات نشر، لكن المثال أدناه يستخدم واجهة برمجة التطبيقات الأولية لمسح جميع عمليات النشر في المجموعة وتصفيتها لعرض تلك التي تحتوي على نسخ فاشلة فقط.
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[]
| {name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
فيما يلي شرح سريع للأمر أعلاه:
kubectl get --raw=/apis/apps/v1/deployments | jq .
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] |
{name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)}'
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] |
{name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
نأمل أن تجد بعض هذه النصائح والحيل مفيدة أثناء عملك مع Kubernetes. أعلمنا إذا كانت لديك نصيحة مفضلة أو نصيحة خاصة ترغب في مشاركتها.
لا تنسَ الاطِّلاع على IBM Cloud Kubernetes Service وتطبيق هذه النصائح والحيل عمليًا.
هل تريد الحصول على تجربة عملية مجانية باستخدام Kubernetes؟ استفِد من IBM CloudLabs، وهي منصة تفاعلية جديدة تقدِّم برامج تعليمية حول Kubernetes مع شهادة معتمدة - دون تكلفة أو حاجة إلى تكوين.
ملاحظة ومراقبة وإصلاح مجموعة Kubernetes بأكملها تلقائيًا لتحسين أداء وتوفّر تطبيقك.
تسريع نمو ومرونة الأعمال—حدِّث تطبيقاتك باستمرار على أي منصة باستخدام خدماتنا السحابية والاستشارات التي نقدِّمها.
حلول الحاويات تقوم بتشغيل وتوسيع نطاق أحمال التشغيل التي تعمل ضمن حاويات بأمان وابتكار مفتوح المصدر ونشر سريع.