KlusterKit: مجموعة أدوات مفتوحة المصدر لتبسيط عمليات نشر Kubernetes والعمل في بيئات محلية معزولة ماديًا

يسعدنا اليوم أن نعلن أن Platform9 يفتح الكود المصدري لـ Klusterkit ، وهي مجموعة من ثلاث أدوات ، بموجب ترخيص Apache v2.0 على GitHub.
يقوم عملاؤنا بنشر البرامج في مراكز البيانات الخاصة ، والتي غالبًا ما تكون غير متصلة بالإنترنت (لأسباب أمنية أو لأسباب أخرى). تريد هذه الشركات الكبيرة الاستفادة من Kubernetes وتحديث تطبيقاتها وفي نفس الوقت نشرها في مراكز بيانات مختلفة ، والتي غالباً ما ليس لها صلة بالعالم الخارجي. وهنا يأتي Klusterkit إلى عملية الإنقاذ ، مما يبسط عملية توصيل وإدارة مجموعات K8s في البيئات المعزولة ماديًا.
يتضمن Klusterkit ثلاث أدوات مستقلة يمكن استخدامها معًا أو بشكل منفصل لإدارة دورة حياة مجموعة إنتاج Kubernetes:
- etcdadm ، CLI لإدارة الكتلة المبسطة ، إلخ.
- nodeadm ، إدارة CLI لعقدة تكمل kubeadm وتنشر التبعيات التي يحتاجها kubeadm.
- cctl ، هي أداة لإدارة دورة حياة الكتلة التي تقبل API Cluster من مجتمع Kubernetes وتستخدم nodeadm و etcdadm لتزويد وصيانة مجموعات Kubernetes المتاحة للغاية في بيئات محلية وحتى معزولة جسديًا.
معا ، هذه الأدوات الثلاث تؤدي المهام التالية:
- سهولة تسليم وإدارة مجموعة etcd عالية التوفر ولوحة التحكم Kubernetes في البيئات المحلية المعزولة ماديًا من خلال Cluster API.
- استعادة لوحة التحكم الكتلة بعد فشل في استخدام النسخ الاحتياطي etcd.
- قم بتعبئة جميع القطع الأثرية اللازمة لتوصيل Kubernetes في بيئات معزولة ماديًا.
ميزات Klusterkit
- دعم المعالج متعددة (الكتلة K8s HA).
- توريد وإدارة مجموعات آمنة الخ
- العمل في بيئات معزولة جسديا.
- دعم التحديث المتسلسل والتراجع.
- الفانيلا (vxlan) مثل CNI للواجهة الخلفية ؛ تخطط لدعم CNI الأخرى.
- النسخ الاحتياطي واستعادة مجموعات الخ بعد فقدان النصاب القانوني.
- يحمي لوحة التحكم من نفاد الذاكرة ووقت وحدة المعالجة المركزية.
Klusterkit الحل الهندسة المعمارية

من أجل التسامح مع الخطأ والبساطة ، يستخدم Klusterkit ملف cctl-state.yaml واحد لتخزين بيانات الكتلة Kubernetes. من خلال cctl CLI ، يمكنك إدارة دورة حياة مجموعة Kubernetes على أي جهاز يحتوي على ملف الحالة هذا. يمكن أن يكون هذا جهاز كمبيوتر محمول للمشغل أو أي كمبيوتر آخر يمثل جزءًا من مجموعة Kubernetes.
تنفذ Cctl وتدعو من واجهة الكتلة المنبع api كمكتبة لعمليات CRUD على الكتل. يستخدم ssh-provider ، وهو موفر مفتوح المصدر للمعادن العنقودية مفتوح من Platform9 ، والذي بدوره يستدعي etcdadm و nodeadm لتنفيذ العمليات على الكتلة.
كيفية استخدام Klusterkit ومكوناته:
1 - يمكن تجميع أي من الأدوات الثلاث بسهولة باستخدام أمر go get:
go get -u github.com/platform9/cctl go get -u github.com/platform9/nodeadm go get -u github.com/kubernetes-sigs/etcdadm
2 - يمكن بعد ذلك تجميع هذه الملفات القابلة للتنفيذ ونسخها إلى الأجهزة المستهدفة حيث يجب تشغيل مجموعة Kubernetes التي يمكن الوصول إليها بشكل كبير. ضع ملفات nodeadm و etcdadm في دلائل الإصدار:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm// cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//
3 - إذا لزم الأمر ، قم بتنظيم مجموعة Kubernetes محليًا ، في بيئة معزولة ماديًا ، يمكن بسهولة تنزيل التبعيات اللازمة مقدمًا على جهاز كمبيوتر مزود بإمكانية الوصول إلى الإنترنت باستخدام أمر تنزيل nodeadm و etcdadm. ثم يمكن بسهولة نسخ العناصر التي تم تنزيلها (مثل kubelet وملف وحدة kubelet لـ systemd ، وملف CNI القابل للتنفيذ ، وملف kubeadm ، وجميع صور الحاوية ، بما في ذلك Kubernetes ، وملفات الصور المحفوظة ، و systemd ، وصورة الحاوية ، وغيرها ، وملفات التكوين المقابلة) إلى المضيفين جسديا معزولة جنبا إلى جنب مع CCTL ، nodeadm و etcdadm. (انظر ويكي للحصول على التفاصيل).
4 - عندما يكون كل شيء في مكانه ، يمكنك إنشاء أول مجموعة Kubernetes مع اثنين من الأوامر:
- أولاً إنشاء بيانات اعتماد الكتلة.
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa
- ثم قم بإنشاء كائن كتلة. - يسرد الخيارات المدعومة.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24
- أخيرًا ، أنشئ أول جهاز في المجموعة.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master
قراءة المزيد من الوثائق على جيثب .