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" فلن يأتي شيء مثير للاهتمام منه. بحاجة إلى دعم حصة عملية مساحة الاسم.