Rumah >hujung hadapan web >tutorial js >Pod Statik Hari Kursus Penuh CKA, Penjadualan Manual, Label dan Pemilih dalam Kubernetes
Dalam tugasan ini, kami akan meneroka cara memintas penjadual Kubernetes dengan memberikan pod terus kepada nod tertentu dalam kelompok. Ini boleh menjadi pendekatan yang berguna untuk senario tertentu di mana anda memerlukan pod untuk dijalankan pada nod tertentu tanpa melalui proses penjadualan biasa.
Kami menganggap anda mempunyai kluster Kubernetes berjalan, dibuat dengan konfigurasi KIND (Kubernetes dalam Docker) yang serupa dengan yang diterangkan dalam siaran sebelumnya. Di sini, kami telah mencipta gugusan bernama kind-cka-cluster:
kind create cluster --name kind-cka-cluster --config config.yml
Memandangkan kami telah membincangkan penciptaan kluster dengan KIND dalam siaran terdahulu, kami tidak akan membincangkan butiran tersebut lagi.
Untuk melihat nod yang tersedia dalam kelompok baharu ini, jalankan:
kubectl get nodes
Anda sepatutnya melihat output yang serupa dengan ini:
NAME STATUS ROLES AGE VERSION kind-cka-cluster-control-plane Ready control-plane 7m v1.31.0
Untuk tugasan ini, kami akan menjadualkan pod kami pada jenis-cka-cluster-control-plane.
Sekarang, mari buat manifes pod dalam format YAML. Menggunakan medan nodeName dalam konfigurasi pod kami, kami boleh menentukan nod yang tepat untuk pod, memintas penjadual Kubernetes sepenuhnya.
node.yml:
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx nodeName: kind-cka-cluster-control-plane
Dalam manifes ini:
Pendekatan ini ialah kaedah langsung untuk pemilihan nod, mengatasi kaedah lain seperti nodeSelector atau peraturan perkaitan.
Menurut dokumentasi Kubernetes:
"nodeName ialah bentuk pemilihan nod yang lebih langsung daripada afiniti atau nodeSelector. nodeName ialah medan dalam spesifikasi Pod. Jika medan nodeName tidak kosong, penjadual mengabaikan Pod dan kubelet pada nod yang dinamakan cuba diletakkan Pod pada nod itu mengatasi peraturan nodeName menggunakan nodeSelector atau peraturan perkaitan dan antiperkaitan."
Untuk butiran lanjut, rujuk dokumentasi Kubernetes tentang tugasan nod.
Dengan manifes kami sedia, gunakannya pada kelompok:
kubectl apply -f node.yml
Arahan ini mencipta pod nginx dan memberikannya terus ke nod satah kind-cka-cluster-control-plane.
Akhir sekali, pastikan pod berjalan pada nod yang ditentukan:
kubectl get pods -o wide
Output harus mengesahkan bahawa pod nginx memang berjalan pada jenis-cka-cluster-control-plane:
kind create cluster --name kind-cka-cluster --config config.yml
Ini mengesahkan bahawa dengan menetapkan medan nodeName, kami berjaya memintas penjadual Kubernetes dan menjadualkan terus pod kami pada nod satah kawalan.
Untuk mengakses nod satah kawalan kelompok kami yang baru dibuat, gunakan arahan berikut:
kubectl get nodes
Navigasi ke direktori yang mengandungi manifes pod statik:
NAME STATUS ROLES AGE VERSION kind-cka-cluster-control-plane Ready control-plane 7m v1.31.0
Sahkan manifes semasa:
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx nodeName: kind-cka-cluster-control-plane
Untuk memulakan semula kube-controller-manager, alihkan fail manifesnya buat sementara waktu:
kubectl apply -f node.yml
Selepas mengesahkan permulaan semula, kembalikan fail manifes ke lokasi asalnya:
kubectl get pods -o wide
Dengan langkah ini, kami berjaya menunjukkan cara untuk mengakses satah kawalan dan memanipulasi manifes pod statik untuk mengurus kitaran hayat komponen satah kawalan.
Selepas mengalihkan sementara fail manifes kube-controller-manager.yaml ke /tmp, kami boleh mengesahkan bahawa kube-controller-manager telah dimulakan semula. Seperti yang dinyatakan dalam catatan sebelum ini, saya menggunakan k9s, yang jelas menunjukkan permulaan semula, tetapi untuk pembaca tanpa k9s, cuba arahan berikut
Periksa Peristiwa:
Untuk mengumpul maklumat lanjut, gunakan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 1/1 Running 0 28s 10.244.0.5 kind-cka-cluster-control-plane <none> <none>
Cari acara pada akhir output. Mulakan semula yang berjaya akan menunjukkan acara yang serupa dengan:
docker exec -it kind-cka-cluster-control-plane bash
Kehadiran acara "Membunuh," "Dicipta," dan "Dimulakan" menunjukkan bahawa pengurus-pengawal-kube telah dihentikan dan kemudian berjaya dimulakan semula.
Setelah anda menyelesaikan tugas anda dan mengesahkan kelakuan pod anda, adalah penting untuk membersihkan mana-mana sumber yang tidak diperlukan lagi. Ini membantu mengekalkan persekitaran yang kemas dan membebaskan sumber dalam kelompok anda.
Senarai Pod:
Mula-mula, anda boleh menyemak pod semasa yang berjalan dalam kelompok anda:
cd /etc/kubernetes/manifests
Anda mungkin melihat output seperti ini:
ls
Huraikan Pod:
Untuk mendapatkan maklumat lanjut tentang pod tertentu, gunakan perintah huraikan:
mv kube-controller-manager.yaml /tmp
Ini akan memberi anda butiran tentang pod, seperti namanya, ruang nama, nod dan konfigurasi lain:
mv /tmp/kube-controller-manager.yaml /etc/kubernetes/manifests/
Padamkan Pod:
Jika anda mendapati pod tidak lagi diperlukan, anda boleh memadamkannya dengan selamat dengan arahan berikut:
kubectl describe pod kube-controller-manager-kind-cka-cluster-control-plane -n kube-system
Sahkan Pemadaman:
Selepas melaksanakan perintah padam, anda boleh mengesahkan bahawa pod telah dialih keluar dengan menyenaraikan pod sekali lagi:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Killing 4m12s (x2 over 8m32s) kubelet Stopping container kube-controller-manager Normal Pulled 3m6s (x2 over 7m36s) kubelet Container image "registry.k8s.io/kube-controller-manager:v1.31.0" already present on machine Normal Created 3m6s (x2 over 7m36s) kubelet Created container kube-controller-manager Normal Started 3m6s (x2 over 7m36s) kubelet Started container kube-controller-manager
Pastikan pod nginx tidak lagi muncul dalam senarai.
Dengan melakukan langkah pembersihan ini, anda membantu memastikan gugusan Kubernetes anda kekal teratur dan cekap.
Dalam bahagian ini, kami akan mencipta tiga pod berdasarkan imej nginx, setiap satu dengan nama unik dan label khusus yang menunjukkan persekitaran berbeza: env:test, env:dev dan env:prod.
Langkah 1: Buat Skrip
Pertama, kami akan mencipta skrip yang mengandungi arahan untuk menjana pod. Gunakan arahan berikut untuk mencipta fail skrip:
kind create cluster --name kind-cka-cluster --config config.yml
Seterusnya, tampal kod berikut ke dalam fail:
kubectl get nodes
Langkah 2: Jadikan Skrip Boleh Laksana
Selepas menyimpan fail, jadikan skrip boleh laku dengan arahan berikut:
NAME STATUS ROLES AGE VERSION kind-cka-cluster-control-plane Ready control-plane 7m v1.31.0
Langkah 3: Laksanakan Skrip
Jalankan skrip untuk mencipta pod:
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx nodeName: kind-cka-cluster-control-plane
Anda sepatutnya melihat output yang menunjukkan penciptaan pod:
kubectl apply -f node.yml
Langkah 4: Sahkan Pod Yang Dibuat
Skrip kemudiannya akan memaparkan status pod yang dibuat:
kubectl get pods -o wide
Pada ketika ini, anda boleh menapis pod berdasarkan labelnya. Contohnya, untuk mencari pod dengan label env=dev, gunakan arahan berikut:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 1/1 Running 0 28s 10.244.0.5 kind-cka-cluster-control-plane <none> <none>
Anda sepatutnya melihat output yang mengesahkan pod sedang berjalan:
docker exec -it kind-cka-cluster-control-plane bash
Atas ialah kandungan terperinci Pod Statik Hari Kursus Penuh CKA, Penjadualan Manual, Label dan Pemilih dalam Kubernetes. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!