Kubernetes وPrivate Cloud
المسار في لوحة الإدارة: Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s)، ثم Services › Kubernetes (Overview, Clusters, Versions, Policy). Private Cloud: Services › Private Cloud (Overview/vpc, VPC/vpc/list, Plans & pricing/vpc/plans). قم بتفعيل كلا الموديولين ضمن System › Admin › License & updates.
الوظيفة
- Kubernetes. يُنشئ العملاء مجموعات Kubernetes مُدارة على CloudStack الخاص بك باستخدام CloudStack Kubernetes Service (CKS). مستوى التحكم مجاني؛ ويدفع العملاء مقابل عُقد worker. يقوم NexCMP بإنشاء شبكة منفصلة وعنوان IP عام لكل مجموعة ويعزل مجموعات كل عميل على حدة.
- Private Cloud. يحصل العملاء على شبكة خاصة (CloudStack VPC) تتضمن موجهًا، وشبكات فرعية (tiers)، وقواعد جدار حماية (network ACLs)، وأجهزة افتراضية بداخلها. تُباع وفق خطة نطاق ترددي بسرعة مخصصة وغير محدودة الاستهلاك (على سبيل المثال 50، 100، 500 Mbps، و1 و3 Gbps). يمكن لكل عميل امتلاك VPC واحد افتراضيًا.
يعتمد كلاهما على CloudStack ويستخدمان API الخاص به عبر الاتصال نفسه.
المتطلبات
Kubernetes
| العنصر | المتطلب |
|---|---|
| CloudStack | 4.23 (تم اختباره). يجب أن يكون CKS مُفعّلًا (cloud.kubernetes.service.enabled = true). |
| الحساب | حساب Domain Admin في النطاق المخصص، حتى يتمكن NexCMP من إنشاء مشروع CloudStack لكل عميل وتحديد قيود الموارد بداخله. راجع CloudStack. |
endpoint.url | يجب أن يشير الإعداد العام في CloudStack إلى management API الخاص بك، بحيث يمكن للأجهزة الافتراضية في المجموعة الوصول إليه. يعرض NexCMP القيمة ونتيجة فحص نقطة النهاية. |
| الإصدارات | إدخال إصدار مدعوم واحد على الأقل من Kubernetes مع ملف ISO الخاص بملفاته الثنائية، بالحالة Enabled. لا يمكن طرح الإصدارات التي تجاوزت نهاية فترة الدعم للبيع. |
| عرض Control-plane | عرض خدمة مجاني مع 2 vCPU و2048 MB RAM وحد أقصى للمعالج (CPU cap) بدقة (limitcpuuse = true)، مرئي للحساب. يرفض الخادم أي شيء آخر مع cp_offering_invalid. |
| الشبكة | عرض شبكة معزولة يدعم CKS ومُفعّل. |
| عناوين IP | عناوين IPv4 عامة ومتاحة ضمن النطاق القابل للبيع؛ تستخدم كل مجموعة عنوانًا واحدًا. |
| السعة | تستهلك كل مجموعة منك ما بين 2 إلى 4 GB من الذاكرة العشوائية (RAM) لمستوى التحكم وجهاز افتراضي صغير للموجه. راقب علامات تبويب السعة. |
Private Cloud
| العنصر | المتطلب |
|---|---|
| CloudStack | 4.23 (تم اختباره) مع تفعيل VPC. |
| عرض VPC | عرض VPC واحد. يمنح العرض المزدوج (dual-stack) كل tier نطاق IPv6 /64 أيضًا. |
| عروض شبكة Tier | عرض شبكة واحد لكل خطة نطاق ترددي، تم إنشاؤه لـ VPC، مع تعيين معدل الشبكة (Mbps) مساويًا للخطة، بالإضافة إلى عرض مقفل (locked) واحد بسرعة 1 Mbps يُطبّق عند قفل VPC بسبب عدم الدفع. |
| الحساب | الحساب المخصص (يُوصى بـ Domain Admin). تظل شبكات VPC في الحساب، وليس في المشاريع. |
| عناوين IP | عناوين IPv4 عامة ومتاحة (يستخدم كل VPC عنوانًا واحدًا لـ source NAT). |
| مساحة العناوين | يتلقى كل VPC نطاق /16 من 10.128.0.0/9. احتفظ بهذا النطاق غير مستخدم في شبكاتك الخاصة. |
| يعتمد على | اتصال CloudStack نشط؛ موديول Private Cloud. |
تجهيز البنية التحتية
Kubernetes: تفعيل CKS وإضافة الإصدارات
قم بتفعيل الخدمة وتعيين نقطة النهاية، ثم أعد تشغيل خادم الإدارة:
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementيتم استدعاء
endpoint.urlبواسطة وحدة تحكم المجموعة، لذا يجب أن يكون عنوانًا يمكن لأجهزة المجموعة الافتراضية الوصول إليه.أنشئ ملف ISO للملفات الثنائية الخاصة بـ Kubernetes للإصدار الذي ترغب في بيعه، باستخدام سكربت
create-kubernetes-binaries-iso.shمن شجرة مصادر CloudStack، واستضفه على خادم ويب ثم قم بتسجيله:bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateانتظر حتى تصبح حالة ISO هي Ready ويكون الإصدار Enabled.
أنشئ عرض Control-plane، مقصورًا على نطاق NexCMP:
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>تحقق من تفعيل عرض شبكة CKS:
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Private Cloud: إنشاء العروض
في واجهة مستخدم CloudStack (Service Offerings › Network Offerings › Add network offering) أو باستخدام cmk:
عرض ما لديك في القائمة:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,stateاستخدم عرض VPC مفعلاً (مزدوج المكدس dual-stack إذا كنت تريد IPv6). وإذا احتجت إلى عرض جديد، فقم باستنساخ عرض VPC الافتراضي في CloudStack وتفعيله.
بالنسبة إلى كل خطة نطاق ترددي تبيعها، أنشئ عرض شبكة لـ VPC (استنسخ "isolated network offering for VPC networks" الافتراضي) واضبط Network rate (Mb/s) على سرعة الخطة:
50،100،500،1000،3000. فعّل كل عرض.أنشئ عرضاً إضافياً مع معدل شبكة 1 (
VPC-LOCKED-1M) لشبكات VPC المقفلة: لا يزال بإمكان العملاء الوصول إلى خوادمهم عبر SSH، ولكن السرعة ستكون محدودة.دوّن معرّف UUID لكل عرض. سيحتاجه NexCMP في القسم التالي.
معرّفات العروض المرفقة مسبقًا غير موجودة في سحابتك
يتم ملء نموذج Private Cloud مسبقاً بمعرّفات UUID لعروض تنتمي إلى تثبيت CloudStack آخر. استبدل كل معرّف بالمعرّف الخاص بك، وإلا سيفشل أول طلب VPC.
الربط في NexCMP
Kubernetes
افتح Infrastructure › Cloud provider › CloudStack واختر التبويب Kubernetes (CKS). تعرض البطاقة الموجودة على اليمين CKS status on CloudStack (read-only) كلاً من
kubernetesserviceenabled، وendpoint.urlمع Endpoint check، وعرض شبكة CKS، وإعداداتcloud.kubernetes.*، وقائمة ملفات ISO والإصدارات. انقر فوق Recheck بعد إصلاح أي شيء.في Sales config، اختر Control plane Offering (يظهر تحذير إذا لم يكن بالضبط 2 vCPU / 2048 MB / CPU cap)، واضبط Max workers per cluster (من 1 إلى 9: يسمح CKS بـ 10 عقد بما في ذلك عقدة التحكم)، وفعّل الخيار Enable CKS for this backend ثم اضغط على Save. يظل المفتاح معطلاً حتى يتم اختيار عرض.

افتح Services › Kubernetes › Versions وانقر على Sync from CloudStack. فعّل الخيار Available for new clusters للإصدارات التي تبيعها، وحدد الإصدار الافتراضي، وتاريخ End of life (EOL) إذا أردت.
افتح Services › Kubernetes › Policy. في Worker plans أضف خططًا باستخدام Plan code (A-Z، و0-9، وشرطة، حتى 16 حرفًا). اضبط NVMe per worker (GB)، وMin and max workers، وحدود المجموعات (المجموعات النشطة لكل حساب، وعمليات الإنشاء خلال 24 ساعة، والحد الأقصى الإجمالي، وعمليات CKS المتزامنة). ثم فعّل Sell Kubernetes (CKS). يجب أن تظل خطة واحدة على الأقل متاحة للبيع.

Private Cloud
افتح Services › Private Cloud (نظرة عامة). في بطاقة السياسة، استبدل VPC offering وLocked offering tier بمعرّفات UUID الخاصة بك. تحقق من الحدود (عدد VPCs لكل حساب، والطبقات، والأجهزة الافتراضية، وقواعد ACL لكل VPC، والرصيد المطلوب لإنشائها محسوبًا بساعات رسوم الخطة، وتغييرات الخطة خلال 24 ساعة، والعمليات المتزامنة حيث يعني 0 التوقف في حالات الطوارئ) وخوادم DNS. انقر على Save (سيُطلب منك تحديد سبب).

افتح Services › Private Cloud › Plans & pricing. لكل خطة، انقر فوق Edit واضبط VND price per month، وOn sale، ومعرّف UUID الخاص بـ CloudStack tier offering الذي يطابق معدل شبكته سرعة الخطة بوحدة Mbps. يُظهر الصف التكلفة والربح عند الاستخدام الكامل، ليتسنى لك معرفة الخطط التي تقل عن تكلفتك.

فعّل Sell Private Cloud. لتجربتها أولاً، أضف معرّفات حسابات الاختبار إلى Beta accounts: حيث يمكن لتلك الحسابات استخدام الخدمة بينما يكون مفتاح المبيعات معطلاً.
التحقق
- Kubernetes: تعرض بطاقة الحالة
kubernetesserviceenabled: true، وفحص نقطة نهاية سليمًا، وإصدارًا مفعلاً. أنشئ مجموعة اختبار بعامل واحد بصفتك عميلاً؛ حيث يجب أن تصل إلى حالة running ويُظهرهاkubectl get nodesكجاهزة. احذفها بعد ذلك: تعود الشبكة وعنوان IP إلى التجمع. - Private Cloud: أنشئ VPC بأصغر خطة بصفتك عميلاً تجريبياً. يظهر VPC بحالة نشطة، وتحصل الطبقة على شبكتها الفرعية، وتصل VM في الطبقة إلى الإنترنت عبر موجّه VPC، ويسري مفعول Change plan إلى خطة أكبر خلال حوالي 20 ثانية دون انقطاع الاتصالات.
القيود والملاحظات
- Kubernetes: تتم فوترة عقد workers مثل أجهزة VM بأسعار الخطة وتُحتسب كأجهزة VM ضمن حدود VM. يمكن أن يضم العنقود 9 workers كحد أقصى بسبب حد CKS البالغ 10 عقد.
- Kubernetes: تكون control plane والموجّه وعنوان IP العام للعنقود مجانية للعميل، بينما تتحمل أنت تكلفتها.
- Private Cloud: جميع الخطط غير محدودة الاستهلاك. الأسعار في النموذج بالدونغ الفيتنامي شهرياً؛ ويستخدم عمود التكلفة سعراً مرجعياً لا يخصك، لذا استخدم أرقامك الخاصة.
- يقتصر VPC المقفل على سرعة 1 Mbps، ولا تتم فوترته ولا يُحذف تلقائياً.
- تستخدم Private Cloud موجّهاً واحداً لكل VPC، وليس زوجاً احتياطياً متكرراً. وإذا تعطل مضيفه، يُعيد CloudStack بناءه خلال بضع دقائق.
استكشاف الأخطاء وإصلاحها
| العَرَض | السبب | الحل |
|---|---|---|
cp_offering_invalid / "هذا العرض ليس 2 vCPU / 2048 MB / limitcpuuse" | يحتوي عرض control-plane على أحجام أخرى أو يفتقر إلى حد أقصى للـ CPU | أنشئ العرض كما في الخطوة 3 واختره مرة أخرى. |
| مفتاح تبديل Enable CKS معطّل | لم يتم اختيار أي عرض لـ control-plane | اختر واحداً أولاً. |
kubernetesserviceenabled: false | CKS معطّل في CloudStack | قم بتمكينه وأعد تشغيل خادم الإدارة. |
| فشل فحص نقطة النهاية | تعذر الوصول إلى endpoint.url من أجهزة VM الخاصة بالعنقود | عيّن عنوان URL يمكن الوصول إليه، وأعد تشغيل خادم الإدارة، وانقر على Recheck. |
| "EOL: لا يمكن التمكين للبيع" | انقضى تاريخ نهاية دورة حياة الإصدار | سجّل إصداراً أحدث. |
| "لا توجد إصدارات: انقر على Sync from CloudStack" | لم يتم تسجيل أي إصدار Kubernetes | سجّل إصداراً وقم بالمزامنة. |
| "الواجهة الخلفية لـ CKS معطلة: لا يمكن للعملاء إنشاء عناقيد حتى في حال تفعيل علامة البيع" | مفتاح البيع مفعّل ولكن الواجهة الخلفية لـ CKS معطلة | قم بتمكين CKS في علامة التبويب CloudStack. |
| "يجب أن تكون خطة واحدة 1 على الأقل مطروحة للبيع" | تمت إزالة آخر خطة worker | احتفظ بخطة واحدة على الأقل، أو أوقف مبيعات Kubernetes. |
| العنقود عالق في مرحلة الإنشاء | عدم كفاية السعة أو فقدان ملف ISO | تحقق من علامات تبويب السعة وحالة ملف ISO الخاص بالإصدار. |
| فشل VPC جديد في الخطوة الأولى | معرّف عرض VPC أو عرض الطبقة غير صالح | استبدل كل UUID خاص بالعرض بمعرّف من CloudStack لديك. |
| "يجب أن يكون cs_offering_id عبارة عن UUID" | معرّف العرض ليس UUID | الصق المعرّف من cmk list networkofferings. |
| فشل تغيير الخطة | عرض الطبقة الجديد غير موجود أو أن معدل نقل الشبكة غير صحيح | تحقق من UUID الخاص بالعرض ومعدل نقل الشبكة له. |