مرحبا بالجميع!لقد حدث أن فريق التطوير الصغير لدينا ، ناهيك عن ذلك مؤخرًا ، وبالتأكيد ليس مفاجئًا ، قد نشأ لنقل بعض المنتجات (وفي المستقبل ، جميعها) إلى Kubernetes.
كان هناك العديد من الأسباب لذلك ، لكن قصتنا ليست عن holivar.
من أساس البنية التحتية ، لم يكن لدينا خيار كبير. vCloud Director و vCloud Director. لقد اخترنا إصدارًا جديدًا وقررنا البدء.
مرة أخرى ، نظرًا إلى "الطريق الصعب" ، توصلت بسرعة إلى استنتاج مفاده أن هناك حاجة إلى أداة لأتمتة العمليات الأساسية على الأقل ، مثل النشر والتحجيم ، أمس. أبرز الانغماس العميق في Google منتجًا مثل VMware Container Service Extension (CSE) - وهو منتج مفتوح المصدر يسمح لك بأتمتة إنشاء وتحجيم مجموعات k8s لأولئك الموجودين في vCloud.
إخلاء المسئولية: CSE لها حدودها ، ولكن لأغراضنا جاء الأمر بشكل مثالي. أيضًا ، يجب أن يدعم الموفر السحابي الحل ، ولكن نظرًا لأن جزء الخادم مفتوح أيضًا ، اطلبه من أقرب مدير :)
تثبيت عميل CSE
- للبدء ، ستحتاج إلى حساب مسؤول في مؤسسة vCloud وشبكة موجهة تم إنشاؤها مسبقًا لنظام المجموعة. هام: أثناء عملية النشر تحتاج إلى الوصول إلى الإنترنت من هذه الشبكة ، لا تنس تكوين جدار الحماية / NAT.
معالجة لا يهم. في هذا المثال ، خذ 10.0.240.0/24:

نظرًا لأنه بعد إنشاء المجموعة ، ستحتاج إلى إدارتها بطريقة أو بأخرى ، فمن المستحسن أن يكون لديك VPN مع التوجيه إلى الشبكة التي تم إنشاؤها. نحن نستخدم طبقة المقابس الآمنة (SSL-VPN) التي تم تكوينها في Edge Gateway في مؤسستنا.
- بعد ذلك ، تحتاج إلى تثبيت عميل CSE إلى حيث ستتم إدارة مجموعات k8s. في حالتي ، هذا جهاز كمبيوتر محمول يعمل واثنين من الحاويات
المخفية جيدًا التي تعمل على توجيه التشغيل الآلي.
يتطلب العميل تثبيت Python الإصدار 3.7.3 والإصدارات الأحدث ووحدة vcd-cli مثبتة ، لذلك سنقوم بتثبيت كليهما.
pip3 install vcd-cli pip3 install container-service-extension
- بعد التثبيت ، تحقق من إصدار CSE واحصل على ما يلي:
# vcd cse version Error: No such command "cse".
بشكل غير متوقع ، ولكن قابل للتثبيت. - كما اتضح ، يحتاج CSE إلى ثمل كوحدة نمطية إلى vcd-cli.
للقيام بذلك ، يجب أولاً تسجيل الدخول vcd-cli إلى منظمتنا:
# vcd login MyCloud.provider.com org-dev admin Password: admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'
- بعد ذلك ، ستنشئ vcd- cli ملف التكوين ~ / .vcd-cli / profiles.yaml
في نهايته ، يجب عليك إضافة ما يلي:
extensions: - container_service_extension.client.cse
- ثم نتحقق مرة أخرى:
# vcd cse version CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
مرحلة تثبيت العميل كاملة. دعنا نحاول نشر المجموعة الأولى.
نشر الكتلة
يوجد في CSE عدة مجموعات من معلمات الاستخدام ، يمكن الاطلاع عليها جميعًا
هنا.- أولاً ، قم بإنشاء المفاتيح للوصول بدون كلمة مرور إلى الكتلة المستقبلية. هذه النقطة مهمة ، لأنه افتراضيًا ، سيتم تعطيل إدخال كلمة المرور على العقد. وإذا لم تحدد المفاتيح ، يمكنك الحصول على الكثير من العمل من خلال وحدة التحكم في الجهاز الظاهري ، وهذا لا يعني أنه مناسب.
# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub.
- نحاول البدء في إنشاء كتلة:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs
- إذا حصلنا على خطأ: انتهت الجلسة أو لم يقم المستخدم بتسجيل الدخول. يرجى إعادة تسجيل الدخول. - تسجيل الدخول vcd-cli إلى vCloud مرة أخرى ، كما هو موضح أعلاه ، وحاول مرة أخرى.
هذه المرة ، كل شيء على ما يرام ، وبدأت مهمة إنشاء كتلة.
cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)
- سوف يستغرق حوالي 20 دقيقة لإكمال المهمة. في غضون ذلك ، سنقوم بتحليل معلمات الإطلاق الرئيسية.
- - الشبكة - الشبكة التي أنشأناها في وقت سابق.
- - مفتاح - المفاتيح - التي أنشأناها ، والتي سيتم كتابتها إلى العقد الكتلة.
- - العقد n - عدد عقد العامل في الكتلة. سيكون هناك دائمًا معالج واحد ، وهذا هو أحد قيود CSE.
- - تمكين - nfs - إنشاء عقدة إضافية لكرات NFS تحت وحدات التخزين الثابتة. قليلاً من خيار الدواسة ، سنعود لاحقًا لضبط ما يفعله.
- وفي الوقت نفسه ، في vCloud ، يمكنك مراقبة إنشاء الكتلة بشكل مرئي.

- بمجرد اكتمال مهمة إنشاء كتلة ، تصبح جاهزة للعمل.
- تحقق من النشر باستخدام الأمر vcd cse cluster info MyCluster .

- بعد ذلك ، نحتاج إلى الحصول على تكوين الكتلة لاستخدام kubectl .
# vcd cse cluster config MyCluster > ./.kube/config
- ويمكنك التحقق من حالة الكتلة التي تستخدمها:

ليس بهذه البساطة
في هذه المرحلة ، يمكن اعتبار المجموعة عاملة بشروط ، إن لم يكن للقصة ذات المجلدات الثابتة. نظرًا لأننا في vCloud ، فسوف يفشل استخدام vSphere Provider. تم تصميم الخيار
- تمكين nfs لتهدئة هذه المشكلة ، لكنه لم ينجح في النهاية. ضبط يدوي هو مطلوب.
- للبدء ، تحتاج العقدة الخاصة بنا إلى إنشاء قرص مستقل منفصل في vCloud. هذا يضمن أن بياناتنا لا تختفي مع الكتلة إذا تم حذفها. أيضا ، قم بتوصيل محرك الأقراص إلى NFS.
# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares' # vcd vapp attach mycluster nfsd-9604 nfs-shares-1
- بعد ذلك ، نذهب عبر ssh (هل قمت بالفعل بإنشاء المفاتيح؟) إلى عقدة NFS الخاصة بنا وأخيراً توصيل القرص:
root@nfsd-9604:~# parted /dev/sdb (parted) mklabel gpt Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) unit GB (parted) mkpart primary 0 100 (parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 100GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 0.00GB 100GB 100GB primary (parted) quit root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1 Creating filesystem with 24413696 4k blocks and 6111232 inodes Filesystem UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
- قم بإنشاء دليل للبيانات وقم بتحميل قسم جديد هناك:
mkdir /export echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab mount -a
- لنقم بإنشاء خمسة أقسام اختبار ومشاركتها للمجموعة:
>cd /export >mkdir vol1 vol2 vol3 vol4 vol5 >vi /etc/exports
- بعد كل هذا السحر ، يمكنك إنشاء PV و PVC في مجموعتنا مثل هذا:
PV
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolume metadata: name: nfs-vol1 spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs:
PVC
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 10Gi EOF
في هذا ، تنتهي قصة إنشاء مجموعة واحدة وتبدأ قصة دورة حياتها. على سبيل المكافأة ، هناك أمران أكثر فائدة من CSE يسمحان لك بتوفير الموارد في بعض الأحيان
أو لا :
شكرا لكم جميعا على وقتك ، إذا كان لديك أسئلة - اسأل في التعليقات.