حاويات سريعة الزوال Kubernetes First Steps

Ephemeral Containers Kubernetes هي فكرة مثيرة للاهتمام لتصحيح مشاكل في الحاويات التي لا تحتوي على أي شيء إلى جانب binar القابل للتنفيذ.

تتوفر بعض المعلومات على موقع Kubernetes ويمكن العثور على العديد من الأمثلة على نطاق واسع.

هذه الوظيفة تجريبية ، في براري وصف إصدارات ألفا بيتا من cubera لم يفهم.
تم اختباره على Kubernetes v1.16.3

لتتمكن من بدء تشغيل الحاوية المؤقتة في الموقد ، تحتاج إلى تنشيط الوظيفة المقابلة / وعبر بوابات الميزات .

بشكل عام ، تعد بوابات الميزات خيارًا يجب تشغيل المكون الضروري للمكعب منه (ننظر في معلمات تشغيل العمليات عبر ps) أي من المحتمل أن تكون المجموعة الصغيرة التي تم إطلاقها باستخدام هذه المعلمة غير كافية ، أو تتطلب ميزات مختلفة التنشيط على المكونات المقابلة للمكعب.

اعتمادًا على وضع استخدام المكعب ، هناك الخيارات التالية

1.
minikube start --feature-gates="EphemeralContainers=true" 

2. توسيع الكتلة عن طريق إضافة إلى القسم

 apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration localAPIEndpoint: {} nodeRegistration: kubeletExtraArgs: "feature-gates": "EphemeralContainers=true" --- apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration apiServer: extraArgs: "feature-gates": "EphemeralContainers=true" scheduler: extraArgs: "feature-gates": "EphemeralContainers=true" controllerManager: extraArgs: "feature-gates": "EphemeralContainers=true" 

3. على الكتلة الحية

 /var/lib/kubelet/kubeadm-flags.env 

إضافة إلى المعلمات

 --feature-gates=EphemeralContainers=true 

لجعلها تبدو وكأنها

 KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --feature-gates=EphemeralContainers=true --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1" 

أعد تشغيل خدمة kubelet

 /etc/kubernetes/manifests/kube-apiserver.yaml 

أضف المتغيرات التالية إلى نهاية قائمة cmd:

 spec: containers: - command: - --feature-gates=EphemeralContainers=true 

وبالمثل ، نحن نحكم

 kube-scheduler.yaml kube-controller-manager.yaml 

بعد

 kubectl get pods -A 

في مساحة نظام kube ، نحن نبحث عن القرون التي تحتوي على الاسم

 kube-apiserver kube-scheduler kube-controller-manager 

دعونا إزالة هذه القرون عبر kubectl حذف pod
يتم إعادة إنشائها مع المعلمات من الملفات التي تم تصحيحها.

4. من الناحية النظرية ، هناك خيار آخر ، لكنه لم ينجح بالنسبة لي

 kubeadm upgrade plan --feature-gates EphemeralContainers=true 

نحن نحاول الاتصال حاويات جراب.

نسخة صغيرة من موقع Coober.

نقوم بإنشاء ملف ec.json نستبدل فيه مثال pod باسم pod الذي يتصل به بلطف ، في الصورة نكتب حاوية بأدوات تصحيح الأخطاء (على سبيل المثال ، ubuntu):

 { "apiVersion": "v1", "kind": "EphemeralContainers", "metadata": { "name": "example-pod" }, "ephemeralContainers": [{ "command": [ "sh" ], "image": "busybox", "imagePullPolicy": "IfNotPresent", "name": "debugger", "stdin": true, "tty": true, "terminationMessagePolicy": "File" }] } 

قم بتصحيح خصائص العداد الذي سنقوم بالاتصال به ، ولا تنسَ مساحة الاسم

 kubectl replace --raw /api/v1/namespaces/<b>default</b>/pods/<b>example-pod</b>/ephemeralcontainers -f ec.json 

نعلق وتشغيل قذيفة في الحاوية:

 kubectl attach -it example-pod -c debugger 

إذا قمت بإجراء "ps auxww" فلن يأتي شيء مثير للاهتمام منه. بحاجة إلى دعم حصة عملية مساحة الاسم.

Source: https://habr.com/ru/post/ar479304/


All Articles