Dalam projek ini, saya ingin menggunakan konsep Kubernetes seperti bekas init dan bekas kereta sampingan, tetapi saya tidak mahu hanya mengikuti tutorial.
Matlamat saya adalah untuk membina sesuatu yang tidak dapat dilupakan.
Selepas beberapa sumbang saran, saya mempersembahkan kepada anda Aplikasi Dapatkan Saya!
Apl Dapatkan Saya direka untuk mengambil dan memaparkan kandungan secara dinamik daripada pelbagai repositori GitHub. Aplikasi ini berjalan dalam pod Kubernetes dan terdiri daripada dua komponen utama:
Bekas Nginx: Ini berfungsi sebagai aplikasi utama, mengehos kandungan yang diambil secara dinamik. Ia ringan dan cekap, menjadikannya ideal untuk menyajikan halaman web statik.
Bekas Sidecar: Ini berjalan bersama bekas nginx utama. Ia bertanggungjawab untuk menyegarkan kandungan setiap 5 saat dengan mengambil HTML terkini daripada halaman GitHub yang dipilih secara rawak. Ini memastikan kandungan yang disampaikan oleh Nginx sentiasa terkini.
Bekas Init: Ini memulakan persekitaran sebelum bekas utama bermula. Ia menyemak ketersediaan Perkhidmatan Apl Dapatkan Saya dengan menyelesaikan entri DNSnya. Langkah ini memastikan bahawa aplikasi bersedia untuk berinteraksi dengan perkhidmatan sebaik sahaja ia mula berjalan. Baca lebih lanjut di sini (saya terpaksa)
Bekas nginx kemudiannya menyajikan halaman web HTML yang dikemas kini, menjadikannya boleh diakses melalui penyemak imbas melalui perkhidmatan NodePort.
Sebelum kami bermula, pastikan anda mempunyai fail konfigurasi untuk membuat gugusan Kubernetes. Rujuk panduan Mula Pantas Jenis untuk mendapatkan arahan terperinci tentang menyediakan kluster Jenis anda.
Buat fail bernama config.yml dengan kandungan berikut untuk menentukan kelompok Jenis anda:
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: cka-cluster nodes: - role: control-plane extraPortMappings: - containerPort: 30001 # Change this to match the NodePort hostPort: 30001 listenAddress: "0.0.0.0" protocol: tcp - role: worker - role: worker
Jalankan arahan berikut untuk mencipta kluster:
kind create cluster --name kind-cka-cluster --config config.yml
Gunakan arahan berikut untuk menetapkan konteks kepada kelompok baharu:
kubectl config use-context kind-kind-cka-cluster
Mula-mula, sediakan direktori dan struktur fail untuk projek itu.
mkdir get-me-app cd get-me-app nano get-me-app.yml
Dalam fail get-me-app.yml, kami akan mentakrifkan pod Kubernetes yang merangkumi bekas nginx, bekas sidecar untuk menyegarkan kandungan dan bekas init untuk pengambilan data awal.
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: cka-cluster nodes: - role: control-plane extraPortMappings: - containerPort: 30001 # Change this to match the NodePort hostPort: 30001 listenAddress: "0.0.0.0" protocol: tcp - role: worker - role: worker
bekas nginx: Ini ialah bekas utama, menyajikan kandungan pada port 80. VolumeMount menjadikan direktori /usr/share/nginx/html tersedia dalam volum workdir pod.
Bekas kereta sampingan (penyegar kandungan): Bekas ini berjalan seketika gelung benar, memuat turun versi terkini halaman web setiap 5 saat. Ini memastikan kandungan dalam volum workdir kekal dikemas kini.
Bekas init (init-myservice): Ini menunggu perkhidmatan get-me-app tersedia dengan melakukan carian DNS secara berterusan. Ia berjalan sekali sahaja semasa pemulaan dan tidak dimulakan semula selepas selesai.
Jilid: Kelantangan workdir (jenisDir kosong) dikongsi antara bekas, membenarkan bekas init, sidecar dan nginx mengakses dan menyampaikan kandungan yang sama.
Untuk menjadikan apl boleh diakses melalui penyemak imbas pada mesin tempatan anda, konfigurasikan perkhidmatan NodePort untuk mendedahkan port pod 80.
Tambah definisi perkhidmatan ini dalam get-me-app-service.yml:
kind create cluster --name kind-cka-cluster --config config.yml
Letakkan persediaan dengan:
kubectl config use-context kind-kind-cka-cluster
Aksesnya dengan melawati http://localhost:30001 dalam penyemak imbas anda, dan anda harus mempunyai halaman github. Muat semula halaman selepas 5 saat dan anda akan melihat halaman github yang berbeza.
Projek ini membantu saya memahami cara bekas init boleh memulakan sumber kongsi dan cara bekas kereta sisi memastikan sumber tersebut dikemas kini untuk aplikasi utama. Ini adalah cara yang menarik untuk mencuba dan mempelajari tentang pengendalian data masa nyata dalam Kubernetes.
Berikut ialah kandungan terformat untuk bahagian yang anda berikan:
Nota Tamat: Sila ingat bahawa projek ini bukan sebahagian daripada tutorial video. Saya ingin membina sesuatu sendiri menggunakan konsep daripada tutorial sebagai panduan umum.
Atas ialah kandungan terperinci CKA Kursus Penuh Hari Berbilang Bekas Pod Kubernetes - Sidecar lwn Init Container. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!