Rumah >hujung hadapan web >tutorial js >Pod Statik Hari Kursus Penuh CKA, Penjadualan Manual, Label dan Pemilih dalam Kubernetes

Pod Statik Hari Kursus Penuh CKA, Penjadualan Manual, Label dan Pemilih dalam Kubernetes

Linda Hamilton
Linda Hamiltonasal
2024-11-04 13:33:02920semak imbas

CKA Full Course Day Static Pods, Manual Scheduling, Labels, and Selectors in Kubernetes

Tugas: Jadualkan Pod Secara Manual Tanpa Penjadual

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.

Prasyarat

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.

Langkah 1: Sahkan Nod Kluster

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.

Langkah 2: Tentukan Manifes Pod (node.yml)

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:

  • Kami menetapkan nodeName kepada kind-cka-cluster-control-plane, yang bermaksud penjadual akan melangkau memberikan nod dan Kubelet pada nod khusus ini akan mengendalikan peletakan sebaliknya.

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.

Langkah 3: Gunakan Manifes Pod

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.

Langkah 4: Sahkan Peletakan Pod

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.


Tugas: Log masuk ke nod satah kawalan dan pergi ke direktori manifes pod statik lalai dan cuba mulakan semula komponen 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.


Mengesahkan Mulakan Semula kube-controller-manager

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.


Pembersihan

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.


Mencipta Berbilang Pod dengan Label Khusus

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

Tag dan Sebutan

  • @piyushsachdeva
  • Hari 13: Tutorial Video

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn