CSE: Kubernetes برای کسانی که در vCloud هستند

CSE: Kubernetes برای کسانی که در vCloud هستند
خوش آمدید!

این اتفاق افتاد که تیم کوچک ما، نه اینکه بگوییم اخیراً، و قطعاً نه ناگهانی، رشد کرده است تا برخی (و در آینده همه) محصولات را به Kubernetes منتقل کند.

دلایل زیادی برای این وجود داشت، اما داستان ما در مورد هولیوار نیست.

ما در زمینه زیرساخت انتخاب کمی داشتیم. vCloud Director و vCloud Director. ما جدیدتر را انتخاب کردیم و تصمیم گرفتیم شروع کنیم.

یک بار دیگر، با نگاهی به «راه سخت»، خیلی سریع به این نتیجه رسیدم که دیروز به ابزاری برای خودکارسازی حداقل فرآیندهای اساسی، مانند استقرار و اندازه‌گیری نیاز است. یک فرو رفتن عمیق در گوگل محصولی مانند VMware Container Service Extension (CSE) را آشکار کرد - یک محصول منبع باز که به شما امکان می دهد ایجاد و اندازه کلاسترهای k8s را برای کسانی که در vCloud هستند به طور خودکار انجام دهید.

سلب مسئولیت: CSE محدودیت های خود را دارد، اما برای اهداف ما عالی بود. همچنین، راه حل باید توسط ارائه دهنده ابر پشتیبانی شود، اما از آنجایی که بخش سرور نیز منبع باز است، از نزدیک ترین مدیر خود بخواهید آن را در دسترس داشته باشد :)

برای شروع استفاده از آن، به یک حساب مدیر در سازمان vCloud و یک شبکه مسیریابی شده قبلی برای خوشه نیاز دارید (در طول فرآیند استقرار، به دسترسی به اینترنت از این شبکه نیاز دارید، پیکربندی فایروال/NAT را فراموش نکنید). آدرس دادن مهم نیست در این مثال، 10.0.240.0/24 را در نظر بگیرید

CSE: Kubernetes برای کسانی که در vCloud هستند

از آنجایی که پس از ایجاد، خوشه باید به نحوی مدیریت شود، توصیه می شود یک VPN با مسیریابی به شبکه ایجاد شده داشته باشید. ما از یک VPN استاندارد SSL استفاده می کنیم که در Edge Gateway سازمانمان پیکربندی شده است.

در مرحله بعد، باید کلاینت CSE را در جایی نصب کنید که کلاسترهای k8s مدیریت می شوند. در مورد من، این یک لپ تاپ کار می کند و چند کانتینر به خوبی پنهان شده که اتوماسیون را هدایت می کند.

کلاینت نیاز به نصب پایتون نسخه 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 دقیقه طول می کشد تا کار انجام شود؛ در این بین، بیایید به پارامترهای اصلی راه اندازی نگاه کنیم.

—network — شبکه ای که قبلاً ایجاد کردیم.
—ssh-key — کلیدهایی که ایجاد کردیم، که در گره های خوشه ای نوشته می شوند
— nodes n — تعداد گره های Worker در خوشه. همیشه یک استاد وجود خواهد داشت، این یک محدودیت CSE است
—enable-nfs — یک گره اضافی برای اشتراک های NFS تحت حجم های پایدار ایجاد کنید. این گزینه کمی پدال است؛ ما کمی بعد به تنظیم کاری که انجام می دهد باز خواهیم گشت.

در همین حال، در vCloud می توانید به صورت بصری بر ایجاد یک خوشه نظارت کنید
CSE: Kubernetes برای کسانی که در vCloud هستند

پس از اتمام کار ایجاد یک خوشه، آماده استفاده است.

بیایید صحت استقرار را با دستور بررسی کنیم vcd cse cluster info MyCluster

CSE: Kubernetes برای کسانی که در vCloud هستند

در مرحله بعد باید پیکربندی کلاستر را برای استفاده دریافت کنیم کوبکتل

# vcd cse cluster config MyCluster > ./.kube/config

و با استفاده از آن می توانید وضعیت خوشه را بررسی کنید:

CSE: Kubernetes برای کسانی که در vCloud هستند

در این مرحله، اگر برای داستان با حجم‌های ماندگار نباشد، می‌توان خوشه را به صورت مشروط در نظر گرفت. از آنجایی که ما در vCloud هستیم، نمی‌توانیم از vSphere Provider استفاده کنیم. گزینه --enable-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
#Добавим это в конец файла
/export/vol1 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol2 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol3 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol4 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol5 *(rw,sync,no_root_squash,no_subtree_check)
#:wq! ;)
#Далее - экспортируем разделы
>exportfs -r

پس از این همه جادو، ما می توانیم PV و PVC را در خوشه خود چیزی شبیه به این ایجاد کنیم:
خبرنگار:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-vol1
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    # Same IP as the NFS host we ssh'ed to earlier.
    server: 10.150.200.22
    path: "/export/vol1"
EOF

پی وی سی:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 10Gi
EOF

اینجاست که داستان ایجاد یک خوشه به پایان می رسد و داستان چرخه زندگی آن آغاز می شود. به عنوان یک امتیاز، دو دستور CSE مفید دیگر وجود دارد که به شما امکان می دهد گاهی اوقات منابع را ذخیره کنید یا نه:

#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

با تشکر از همه شما که وقت گذاشتید، اگر سوالی دارید در نظرات بپرسید.

منبع: www.habr.com

اضافه کردن نظر