ہر کسی کو خوش!
ایسا ہوا کہ ہماری چھوٹی ٹیم، یہ کہنا نہیں کہ حال ہی میں، اور یقینی طور پر اچانک نہیں، کچھ (اور مستقبل میں تمام) مصنوعات کوبرنیٹس میں منتقل کرنے کے لیے بڑھ گئی ہے۔
اس کی بہت سی وجوہات تھیں، لیکن ہماری کہانی ہولیور کے بارے میں نہیں ہے۔
ہمارے پاس بنیادی ڈھانچے کی بنیاد کے بارے میں بہت کم انتخاب تھا۔ vCloud ڈائریکٹر اور vCloud ڈائریکٹر۔ ہم نے نئے کا انتخاب کیا اور شروع کرنے کا فیصلہ کیا۔
ایک بار پھر، "دی ہارڈ وے" کو دیکھتے ہوئے، میں بہت جلد اس نتیجے پر پہنچا کہ کم از کم بنیادی عمل کو خودکار کرنے کے لیے ایک ٹول کی ضرورت تھی، جیسے کہ تعیناتی اور سائز بندی، کل کی ضرورت تھی۔ گوگل میں گہرا غوطہ لگانے سے VMware کنٹینر سروس ایکسٹینشن (CSE) جیسی پروڈکٹ سامنے آئی - ایک اوپن سورس پروڈکٹ جو آپ کو vCloud میں موجود لوگوں کے لیے k8s کلسٹرز کی تخلیق اور سائز کو خودکار کرنے کی اجازت دیتا ہے۔
اعلان دستبرداری: CSE کی اپنی حدود ہیں، لیکن ہمارے مقاصد کے لیے یہ بالکل درست تھا۔ نیز، حل کو کلاؤڈ فراہم کنندہ کے ذریعہ سپورٹ کیا جانا چاہئے، لیکن چونکہ سرور کا حصہ بھی اوپن سورس ہے، اس لیے اپنے قریبی مینیجر سے اسے دستیاب کرانے کو کہیں :)
اس کا استعمال شروع کرنے کے لیے، آپ کو vCloud تنظیم میں ایک ایڈمنسٹریٹر اکاؤنٹ اور کلسٹر کے لیے پہلے سے بنائے گئے روٹڈ نیٹ ورک کی ضرورت ہے (تعیناتی کے عمل کے دوران، آپ کو اس نیٹ ورک سے انٹرنیٹ تک رسائی کی ضرورت ہے، Firewall/NAT کو کنفیگر کرنا نہ بھولیں)۔ خطاب سے کوئی فرق نہیں پڑتا۔ اس مثال میں، آئیے 10.0.240.0/24 لیتے ہیں۔
چونکہ تخلیق کے بعد، کلسٹر کو کسی نہ کسی طرح منظم کرنے کی ضرورت ہوگی، اس لیے تجویز کیا جاتا ہے کہ تخلیق کردہ نیٹ ورک پر روٹنگ کے ساتھ VPN ہو۔ ہم اپنی تنظیم کے Edge Gateway پر کنفیگر کردہ ایک معیاری SSL VPN استعمال کرتے ہیں۔
اگلا، آپ کو CSE کلائنٹ انسٹال کرنے کی ضرورت ہے جہاں k8s کلسٹرز کا انتظام کیا جائے گا۔ میرے معاملے میں، یہ ایک کام کرنے والا لیپ ٹاپ اور کچھ اچھی طرح سے پوشیدہ کنٹینرز ہے جو آٹومیشن چلاتے ہیں۔
کلائنٹ کو Python ورژن 3.7.3 اور اس سے زیادہ انسٹال اور ماڈیول انسٹال کرنے کی ضرورت ہے۔
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 میں دوبارہ لاگ ان کریں اور دوبارہ کوشش کریں۔
اس بار سب کچھ ٹھیک ہے اور کلسٹر بنانے کا کام شروع ہو گیا ہے۔
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 — وہ کلیدیں جو ہم نے بنائی ہیں، جو کلسٹر نوڈس پر لکھی جائیں گی۔
نوڈس n — کلسٹر میں ورکر نوڈس کی تعداد۔ ہمیشہ ایک ماسٹر رہے گا، یہ CSE کی حد ہے۔
—enable-nfs — مستقل والیوم کے تحت NFS شیئرز کے لیے ایک اضافی نوڈ بنائیں۔ یہ تھوڑا سا پیڈل آپشن ہے؛ ہم تھوڑی دیر بعد اس کی ٹیوننگ پر واپس آجائیں گے۔
دریں اثنا، وی کلاؤڈ میں آپ کلسٹر کی تخلیق کو بصری طور پر مانیٹر کر سکتے ہیں۔
ایک بار جب کلسٹر بنانے کا کام مکمل ہو جائے تو یہ استعمال کے لیے تیار ہے۔
آئیے کمانڈ کے ساتھ تعیناتی کی درستگی کو چیک کرتے ہیں۔ vcd cse کلسٹر کی معلومات MyCluster
اگلا ہمیں استعمال کرنے کے لیے کلسٹر کنفیگریشن حاصل کرنے کی ضرورت ہے۔ کیوبیکٹل
# vcd cse cluster config MyCluster > ./.kube/config
اور آپ اسے استعمال کرکے کلسٹر کی حیثیت کو چیک کرسکتے ہیں:
اس مقام پر، کلسٹر کو مشروط طور پر کام کرنے پر غور کیا جا سکتا ہے، اگر مسلسل والیوم والی کہانی کے لیے نہیں۔ چونکہ ہم 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
اس کے بعد، ہم اپنے NFS نوڈ پر ssh (آپ نے واقعی چابیاں بنائی ہیں؟) کے ذریعے جاتے ہیں اور آخر میں ڈسک کو جوڑ دیتے ہیں:
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