
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 का उपयोग करने के लिए निम्नलिखित विकल्प उपलब्ध हैं:
=== एक्ज़ीक्यूटेबल
अपने OS के लिए 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 मास्टर API के साथ संचार सर्वर द्वारा प्रॉक्सी किया जाता है।
अपने 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
आप Docker का उपयोग करके Kubebox चला सकते हैं, उदा.:
$ 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 पर ऑनलाइन उपलब्ध है। ध्यान दें कि इसके लिए इस पते का API सर्वर द्वारा CORS के लिए अनुमत उत्पत्ति से मेल खाना आवश्यक है। यह {uri-kube-apiserver}[Kubernetes API सर्वर CLI] के साथ प्राप्त किया जा सकता है, उदा.:
$ 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} | | |===
यदि आप जिस मोड का उपयोग कर रहे हैं वह समर्थित नहीं है, तो आप प्रमाणीकरण टोकन/सर्टिफिकेट मैन्युअल रूप से ताज़ा कर सकते हैं और तदनुसार अपनी 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 के साथ काम करने के लिए परीक्षण की गई है।
हालाँकि, {uri-cadvisor}[cAdvisor] प्रोजेक्ट से DaemonSet उदाहरण भी ठीक काम करना चाहिए।
ध्यान दें कि cAdvisor कंटेनरों को privileged सुरक्षा संदर्भ में चलना चाहिए, ताकि वे प्रत्येक नोड पर कंटेनर रनटाइम तक पहुँच सकें।
आप डिफ़ॉल्ट --storage_duration और --housekeeping_interval विकल्पों को बदल सकते हैं, जो cadvisor.yaml फ़ाइल में घोषित cAdvisor कंटेनर तर्कों में जोड़े गए हैं, ताकि स्टोरेज मूविंग विंडो की अवधि (डिफ़ॉल्ट 5m0s), और नमूनाकरण अवधि (डिफ़ॉल्ट 10s) को समायोजित किया जा सके।
यदि आपके क्लस्टर का कंटेनर रनटाइम सॉकेट सामान्य प्रथा का पालन नहीं कर रहा है, तो आपको उसका पथ भी प्रदान करना पड़ सकता है।
== हॉटकीज़
[cols="1v,2v"] |=== |कीबाइंडिंग |विवरण
2+^.e|सामान्य
|kbd:[l], kbd:[Ctrl+l] |लॉगिन
|kbd:[n] |वर्तमान नेमस्पेस बदलें
|[kbd:[Shift]+]kbd:[←], kbd:[→] + [kbd:[Alt]+]kbd:[1], ..., kbd:[9] |स्क्रीन नेविगेट करें + (exec टर्मिनल के अंदर 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:[→] |Kube कॉन्फ़िगरेशन नेविगेट करें
2+^.e|पॉड्स
|kbd:[Enter] |पॉड चुनें / कंटेनरों के बीच चक्र
|kbd:[r] |कंटेनर में रिमोट शेल
|kbd:[m] |मेमोरी उपयोग
|kbd:[c] |CPU उपयोग
|kbd:[t] |नेटवर्क उपयोग
|kbd:[f] |फ़ाइल सिस्टम उपयोग
|kbd:[e] |पॉड घटनाएँ
|kbd:[Shift+e] |नेमस्पेस घटनाएँ
|kbd:[Ctrl+e] |क्लस्टर घटनाएँ
|===
== FAQ
** संस्करण 0.8.0 से शुरू करते हुए, Kubebox {uri-cadvisor}[cAdvisor] को DaemonSet के रूप में तैनात करने की अपेक्षा करता है। अधिक जानकारी के लिए <> अनुभाग देखें;
spec.nodeName field selector)$ kubectl auth can-i list pods -n cadvisor yes
== विकास
$ git clone https://github.com/astefanutti/kubebox.git
$ cd kubebox
$ npm install
$ node index.js
== स्क्रीनशॉट
क्लस्टर घटनाएँ: ++++
++++एक कंटेनर में शेल: ++++
++++टर्मिनल थीम समर्थन: ++++
++++वेब ब्राउज़र संस्करण: ++++
++++