Wadah Ephemeral Kubernetes Langkah Pertama

Ephemeral Containers Kubernetes adalah ide yang menarik untuk men -debug masalah dalam kontainer yang tidak mengandung apa pun selain binar yang dapat dieksekusi.

Beberapa informasi tersedia di situs web Kubernetes dan beberapa contoh dapat ditemukan secara luas.

Fungsi ini eksperimental, di belantara deskripsi versi alpha-beta cubera tidak mengerti.
Diuji pada Kubernetes v1.16.3

Agar dapat menjalankan wadah ephemeral di perapian, Anda harus mengaktifkan fungsi yang sesuai / dan melalui gerbang fitur .

Secara umum, gerbang fitur adalah opsi dengan mana komponen kubus yang diperlukan harus diluncurkan (kita melihat pada parameter proses yang berjalan melalui ps) yaitu. hanya sebuah cublet yang diluncurkan dengan parameter ini kemungkinan tidak mencukupi, atau fitur yang agak berbeda memerlukan aktivasi pada komponen kubus yang sesuai.

Tergantung pada mode penggunaan kubus, ada opsi berikut

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

2. perluas cluster dengan menambahkan ke bagian

 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. Di cluster hidup

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

Tambahkan ke parameter

 --feature-gates=EphemeralContainers=true 

Agar terlihat seperti

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

Mulai ulang layanan kubelet restart

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

Tambahkan variabel berikut ke akhir daftar cmd:

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

Demikian pula, kami berkuasa

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

Setelah

 kubectl get pods -A 

Di namespace kube-system, kami mencari pod yang berisi nama

 kube-apiserver kube-scheduler kube-controller-manager 

Mari kita hapus pod ini melalui pod hapus kubectl
Mereka diciptakan kembali dengan parameter dari file yang dikoreksi.

4. Secara teoritis, ada pilihan lain, tetapi itu tidak berhasil untuk saya

 kubeadm upgrade plan --feature-gates EphemeralContainers=true 

Kami mencoba menyambung ke wadah pod.

Salinan kecil dari situs Coober.

Kami membuat file ec.json di mana kami mengganti contoh-pod dengan nama pod yang terhubung dengan lembut, dalam gambar kami menulis sebuah wadah dengan alat debugging (misalnya, ubuntu):

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

Menambal properti penghitung yang akan kita hubungkan, jangan lupa tentang namespace

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

Pasang dan jalankan shell di wadah:

 kubectl attach -it example-pod -c debugger 

Jika Anda membuat "ps auxww" maka tidak ada yang menarik akan datang darinya. butuh dukungan Share Process Namespace.

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


All Articles