
⎈❏ وحدة تحكم طرفية ووحدة تحكم ويب لـ Kubernetes
= Kubebox [small]#^⎈❏^# Antonin Stefanutti https://github.com/astefanutti[@astefanutti] // Meta :description: وحدة تحكم طرفية وويب لـ Kubernetes // Settings :idprefix: :idseparator: - :experimental: // Aliases ifdef::env-github[] :note-caption: ℹ️ :icon-check: ✔️ :icon-edit: ✏️ endif::[] ifndef::env-github[] :icons: font :icon-check: icon:check[] :icon-edit: icon:pencil[fw] endif::[] // URIs :uri-kubebox-download: https://github.com/astefanutti/kubebox/releases/download/v0.10.0 :uri-kubebox-twitter: https://twitter.com/kubebox :uri-kube-apiserver: https://kubernetes.io/docs/admin/kube-apiserver/ :uri-ingress-controllers: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-controllers :uri-service-account: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ :uri-xterm-js: https://github.com/xtermjs/xterm.js :uri-cadvisor: https://github.com/google/cadvisor
{description}
// image::./docs/kubebox.png[kubebox, align="center"] ++++
++++=== الميزات
KUBECONFIG أو $HOME/.kube)راجع قسم <> لبعض الأمثلة، وتابع image:https://img.shields.io/badge/%40kubebox-00ACEE.svg?&logo=twitter&colorA=555&logoColor=fff[link={uri-kubebox-twitter}] لبعض التحديثات.
== التشغيل
البدائل التالية متاحة لك لاستخدام Kubebox، حسب تفضيلاتك وقيودك:
=== القابل للتنفيذ
قم بتنزيل الملف القابل للتنفيذ المستقل لـ Kubebox لنظام التشغيل الخاص بك:
$ curl -Lo kubebox {uri-kubebox-download}/kubebox-linux && chmod +x kubebox
$ curl -Lo kubebox {uri-kubebox-download}/kubebox-linux-arm && chmod +x kubebox
$ curl -Lo kubebox {uri-kubebox-download}/kubebox-macos && chmod +x kubebox
ثم قم بتشغيل:
$ ./kubebox
=== الخادم
يمكن تقديم Kubebox من خدمة مستضافة في مجموعة Kubernetes الخاصة بك. محاكاة الطرفية مقدمة من {uri-xterm-js}[Xterm.js] والتواصل مع واجهة برمجة تطبيقات Kubernetes الرئيسية يتم عبر وكيل الخادم.
لنشر الخادم في مجموعة Kubernetes الخاصة بك، قم بتشغيل:
$ kubectl apply -f https://raw.github.com/astefanutti/kubebox/master/kubernetes.yaml
لإيقاف الخادم وتنظيف الموارد، قم بتشغيل:
$ kubectl delete namespace kubebox
لكي يعمل مورد Ingress، يجب أن تحتوي المجموعة على وحدة تحكم Ingress قيد التشغيل. راجع {uri-ingress-controllers}[وحدات تحكم Ingress] لمزيد من المعلومات.
بدلاً من ذلك، لنشر الخادم في مجموعة OpenShift الخاصة بك، قم بتشغيل:
$ oc new-app -f https://raw.github.com/astefanutti/kubebox/master/openshift.yaml
=== Kubectl
يمكنك تشغيل Kubebox كعميل داخل المجموعة باستخدام kubectl، على سبيل المثال:
$ kubectl run kubebox -it --rm --env="TERM=xterm" --image=astefanutti/kubebox --restart=Never
إذا كان RBAC مفعلًا، ستحتاج إلى استخدام الخيار --serviceaccount والإشارة إلى حساب خدمة بصلاحيات كافية.
=== Docker
يمكنك تشغيل Kubebox باستخدام Docker، على سبيل المثال:
$ docker run -it --rm astefanutti/kubebox
قد ترغب في تركيب دليل منزلك حتى يتمكن Kubebox من الاعتماد على ملف ~/.kube/config، على سبيل المثال:
$ docker run -it --rm -v ~/.kube/:/home/node/.kube/:ro astefanutti/kubebox
=== عبر الإنترنت
Kubebox متاح عبر الإنترنت على https://astefanutti.github.com/kubebox. لاحظ أنه يتطلب تطابق هذا العنوان مع الأصول المسموح بها لـ CORS من قبل خادم API. يمكن تحقيق ذلك باستخدام {uri-kube-apiserver}[CLI لخادم API لـ Kubernetes]، على سبيل المثال:
$ kube-apiserver --cors-allowed-origins .*
== المصادقة
نحاول دعم استراتيجيات المصادقة المختلفة التي يدعمها kubectl، لتوفير تكامل سلس مع الإعداد المحلي الخاص بك. فيما يلي استراتيجيات المصادقة المختلفة التي ندعمها، اعتمادًا على كيفية استخدامك لـ Kubebox:
[cols="<,^,^,^",options="header"] |=== ||قابل للتنفيذ|Docker|عبر الإنترنت
|OpenID Connect |{icon-check} |{icon-check} |{icon-check}footnote:[ملفات سلطة شهادة IDP المخصصة غير مدعومة في إصدارات الويب.]
|Amazon EKS| {icon-check} | |
|Digital Ocean |{icon-check} | |
|Google Kubernetes Engine| {icon-check} | | |===
إذا كان الوضع الذي تستخدمه غير مدعوم، يمكنك تحديث رمز المصادقة/الشهادات يدويًا وتحديث ملف kubeconfig الخاص بك وفقًا لذلك.
== cAdvisor
يعتمد Kubebox على {uri-cadvisor}[cAdvisor] لاسترداد مقاييس استخدام الموارد. قبل الإصدار 0.8.0، كان Kubebox يستخدم نقاط نهاية cAdvisor المضمنة في Kubelet. ومع ذلك، يتم إهمال هذه النقاط، وسيتم إزالتها في النهاية، كما نوقش في https://github.com/kubernetes/kubernetes/issues/68522[kubernetes#68522].
بدءًا من الإصدار 0.8.0، يتوقع Kubebox نشر cAdvisor كـ https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/[DaemonSet]. يمكن تحقيق ذلك باستخدام:
$ kubectl apply -f https://raw.githubusercontent.com/astefanutti/kubebox/master/cadvisor.yaml
يوصى باستخدام ملف cadvisor.yaml المقدم، الذي تم اختباره للعمل مع Kubebox.
ومع ذلك، يجب أن يعمل مثال DaemonSet من مشروع {uri-cadvisor}[cAdvisor] بشكل جيد أيضًا.
لاحظ أن حاويات cAdvisor يجب أن تعمل بسياق أمان مميز، حتى تتمكن من الوصول إلى وقت تشغيل الحاوية على كل عقدة.
يمكنك تغيير الخيارات الافتراضية --storage_duration و --housekeeping_interval، المضافة إلى وسيطات حاوية cAdvisor المعلنة في ملف cadvisor.yaml، لضبط مدة نافذة التخزين المتحركة (الافتراضي 5m0s)، وفترة أخذ العينات (الافتراضي 10s) على التوالي.
قد تحتاج أيضًا إلى تقديم مسار مقبس وقت تشغيل الحاوية في مجموعتك، إذا كان لا يتبع الاصطلاح المعتاد.
== مفاتيح الاختصار
[cols="1v,2v"] |=== |مفتاح الاختصار |الوصف
2+^.e|عام
|kbd:[l], kbd:[Ctrl+l] |تسجيل الدخول
|kbd:[n] |تغيير مساحة الاسم الحالية
|[kbd:[Shift]+]kbd:[←], kbd:[→] + [kbd:[Alt]+]kbd:[1], ..., kbd:[9] |التنقل بين الشاشات + (استخدم kbd:[Shift] أو kbd:[Alt] داخل طرفية التنفيذ)
|kbd:[Tab], kbd:[Shift+Tab] |تغيير التركيز داخل الشاشة النشطة
|kbd:[↑], kbd:[↓] |التنقل في القائمة / النموذج / السجل
|kbd:[PgUp], kbd:[PgDn] |التحريك صفحة لأعلى / لأسفل
|kbd:[Enter] |تحديد عنصر / إرسال النموذج
|kbd:[Esc] |إغلاق النافذة المشروطة / إلغاء النموذج
|kbd:[Ctrl+z] |إغلاق الشاشة الحالية
|kbd:[q], kbd:[Ctrl+q] |خروج footnote:[غير متاح في إصدارات الويب.]
2+^.e|تسجيل الدخول
|kbd:[←], kbd:[→] |التنقل بين تكوينات Kubernetes
2+^.e|البودات
|kbd:[Enter] |تحديد البود / التنقل بين الحاويات
|kbd:[r] |شل عن بُعد في الحاوية
|kbd:[m] |استخدام الذاكرة
|kbd:[c] |استخدام وحدة المعالجة المركزية
|kbd:[t] |استخدام الشبكة
|kbd:[f] |استخدام نظام الملفات
|kbd:[e] |أحداث البود
|kbd:[Shift+e] |أحداث مساحة الاسم
|kbd:[Ctrl+e] |أحداث الكتلة
|===
== الأسئلة الشائعة
** بدءًا من الإصدار 0.8.0، يتوقع Kubebox نشر {uri-cadvisor}[cAdvisor] كـ DaemonSet. راجع قسم <> لمزيد من التفاصيل;
spec.nodeName)$ kubectl auth can-i list pods -n cadvisor yes
== التطوير
$ git clone https://github.com/astefanutti/kubebox.git
$ cd kubebox
$ npm install
$ node index.js
== لقطات الشاشة
أحداث الكتلة: ++++
++++شل داخل حاوية: ++++
++++دعم سمة الطرفية: ++++
++++إصدار متصفح الويب: ++++
++++