‫Ada dua bagian metadata dalam YAML
‫yang mungkin Anda lihat di
‫contoh dan pikirkan, bertanya-tanya untuk apa label dan
‫anotasi ada.
‫Anda mungkin tidak menyadari arti pentingnya.
‫Mereka adalah komponen kunci dari Kubernetes dan bagaimana semuanya
‫terhubung satu sama lain.
‫Jauh lebih dari Swarm.
‫Yang pertama adalah label. Label masuk di bawah
‫kunci metadata di root file, jadi mereka opsional
‫di sana. Anda tidak harus meletakkannya
‫tetapi itu adalah nilai kunci, atau daftar nilai kunci, di
‫bawah tajuk label.
‫Itu ada karena beberapa alasan.
‫Mereka tidak selalu diperlukan, tetapi Anda
‫mungkin membutuhkannya untuk memilih objek, mengelompokkannya
‫dan bahkan memfilternya nanti.
‫Ini bisa berupa apa saja yang menggambarkan
‫objek atau sumber daya.
‫Ini bisa menjadi pasangan nilai kunci yang nilainya benar
‫atau salah.
‫Kunci dapat berupa apa pun yang Anda inginkan.
‫Tidak boleh ada lebih dari satu kunci di setiap objek,
‫jadi Anda tidak dapat memiliki dua kunci berturut-turut di
‫YAML untuk objek yang sama yang memiliki nama
‫kunci, katakanlah aplikasi, kan. Ini benar-benar digunakan untuk
‫menggambarkan objek. Sumber daya yang kami
‫buat ini memiliki sifat berbeda.
‫Mungkin lingkungannya seperti prod, dev atau test.
‫Mungkin lokasinya seperti dmz, atau
‫backend atau frontend. Mungkin itu nama aplikasi, atau
‫mungkin itu nama klien, jika Anda meng-hosting situs klien
‫atau sesuatu. Bisa saja apa pun yang
‫Anda inginkan dan tidak ada banyak standar.
‫Dokumentasi Kubernetes yang tercantum dalam sumber daya di sini memang
‫memberi Anda beberapa contoh, tetapi itu hanya contoh.
‫Tidak banyak standar dalam industri ini.
‫Ini sepenuhnya tergantung pada tim Anda, dan perusahaan Anda,
‫tentang bagaimana Anda ingin menggambarkan hal ini.
‫Kami juga memiliki anotasi. Mereka semacam yin dan yang.
‫Labelnya sangat sederhana.
‫Ukurannya sangat terbatas dan karakter apa yang bisa
‫Anda masukkan ke dalamnya. Mereka dimaksudkan untuk menggambarkan sumber daya.
‫Dengan anotasi, ini untuk data yang lebih kompleks
‫dan data multi-nilai, hal-hal seperti itu.
‫Anda biasanya akan melihat anotasi yang digunakan ketika Anda
‫menambahkan hal-hal khusus ke dalam Kubernetes yang dapat berbicara
‫dengan Kubernetes dan mendapatkan data darinya.
‫Anotasi ada di sana untuk mungkin menyimpan
‫data konfigurasi, seperti proksi dan hal masuknya sering dapat
‫menyimpan konfigurasi yang berbeda, di dalam anotasi yang berbeda.
‫Jadi, itu tidak harus
‫ada untuk menjelaskan tetapi lebih untuk konfigurasi.
‫Mari kita kembali ke label sebentar, karena ada banyak
‫hal lain yang menjadi kunci untuk memahami bagaimana semua ini
‫bekerja di Kubernetes.
‫Hal pertama adalah kita dapat melakukan filter sederhana
‫dengan membatasi label dari baris perintah.
‫Kita bisa membuat pod dan katakan saja, hanya tunjukkan
‫pod dengan label ini.
‫Anda bahkan dapat menggunakan koma di sana untuk menambahkan beberapa label.
‫Sebenarnya, ada seluruh level sintaksis untuk hal ini di mana
‫Anda dapat melakukan berbagai jenis sintaksis, berbeda atau dan
‫dan dan.
‫Sungguh, itu salah satu hal di
‫mana saya tidak ingin mengajari Anda semua itu karena itu
‫akan seperti belajar Regex. Ini adalah sesuatu di mana Anda tidak akan
‫benar-benar mempelajarinya hanya dengan mencobanya sekali.
‫Hanya ketika Anda membutuhkannya Anda benar-benar
‫akan memahaminya. Dokumentasi dari Kubernetes
‫sangat bagus. Mereka memiliki banyak tautan
‫yang saya taruh di sumber daya yang akan membawa Anda melalui semua
‫cara berbeda yang mungkin Anda perlukan label.
‫Sejujurnya, Anda tidak benar-benar perlu mempelajarinya sampai Anda
‫tahu Anda membutuhkannya untuk menyelesaikan masalah.
‫Anda bahkan dapat menggunakannya untuk menerapkan perintah.
‫Jika Anda memiliki banyak hal dalam satu file YAML besar
‫dan Anda hanya ingin menerapkan bagian tertentu dari
‫file YAML itu.
‫Saya tidak melakukan ini banyak, tetapi itu ada
‫di mana Anda dapat membatasi untuk mengatakan, hanya menerapkan perubahan atau
‫informasi yang telah Anda masukkan ke dalam YAML untuk
‫label tertentu.
‫Tentu saja, sekali lagi dengan yang ini, Anda bisa
‫meletakkan sintaks yang sama. Anda hanya dapat memiliki satu label.
‫Anda dapat memasukkan koma, memiliki beberapa label dan nilai
‫di sana. Terserah kamu.
‫Ada hal lain yang dilakukan label yang penting
‫untuk cara kerja Kubernetes.
‫Turun ke ada sumber daya tertentu yang berbicara dengan
‫sumber daya lain, atau terhubung ke mereka,
‫atau terkait dengan mereka.
‫Namun Anda ingin mengatakannya. Contoh yang
‫baik adalah layanan perlu tahu pod mana untuk
‫mengirimkan lalu lintas mereka. Anda mungkin bertanya-tanya bagaimana cara mengetahui?
‫Maksud saya, ketika Anda mengetikkannya, jika Anda melakukan perintah layanan
‫Kubectl dan Anda mengarahkannya ke penyebaran,
‫apa sebenarnya yang digunakan untuk mengidentifikasi penyebaran itu?
‫Nah, di CLI, Anda akan berpikir bahwa itu sebenarnya
‫menunjuk ke objek penyebaran.
‫Tapi sungguh, layanan perlu berbicara dengan pod, bukan
‫penyebaran itu sendiri.
‫Itu menggunakan sesuatu yang disebut penyeleksi label.
‫Hal ini biasa terjadi pada banyak sumber daya berbeda
‫yang tingkat abstraksi polongnya lebih tinggi.
‫Agar mereka terkait dengan pod, atau untuk mengetahui pod mana milik
‫mereka, mereka menggunakan pemilih label. Anda akan melihat bahwa
‫dalam YAML di dalam repo kami yang telah Anda
‫gunakan untuk beberapa kuliah terakhir.
‫Jika Anda melihat di aplikasi. yml, Anda akan melihat bahwa selama
‫ini, kami memiliki beberapa hal di sana yang
‫belum kami bicarakan. Yang pertama adalah
‫di bagian atas dengan layanan, kami memiliki pemilih di bawah spesifikasi.
‫Itu harus ada di sana.
‫Kami memberi tahu kunci dan nilai label untuk
‫pod yang perlu mengarahkan lalu lintas.
‫Itu hanya pertandingan sederhana.
‫Perlu menemukan polong dengan itu.
‫Kemudian di bawah penyebaran di bawah, Anda
‫akan melihat bahwa spesifikasi kami memiliki
‫pemilih sendiri, matchLabels, aplikasi, app-nginx.
‫Apa yang terjadi di sana adalah kedua objek
‫tersebut memilih pod berdasarkan kecocokan itu.
‫Itu berarti dalam template di bawah spesifikasi
‫kami, di mana kami menempatkan pod, yang perlu memiliki
‫label di dalamnya sehingga sumber daya tersebut dapat
‫menemukan podnya.
‫Hal yang menyenangkan adalah dalam versi Kubernetes yang
‫lebih baru, adalah bahwa setidaknya dengan hanya satu penyebaran,
‫ini harus disinkronkan. Ini benar-benar akan gagal
‫untuk digunakan jika melihat bahwa label yang cocok dengan
‫pemilih tidak cocok dengan label metadata template karena
‫mereka harus menggunakannya untuk menyebarkan pod dan
‫dapat mengontrolnya.
‫Itu ada untuk mencegah Anda dari melakukan hal yang salah
‫secara tidak sengaja. Itu akan mengharapkan Anda
‫untuk memiliki potongan-potongan di sana. Dalam versi yang lebih lama, biasanya
‫ada cara di mana ia akan secara otomatis menghasilkannya, secara default,
‫sehingga Anda dapat mengabaikannya. Mereka sudah berhenti melakukan itu sekarang,
‫dan mereka memaksamu untuk memasukkan ini ke sana. Saya pikir
‫itu hal yang baik, terutama betapa
‫pentingnya pemilih label ini. Secara teknis, jika Anda
‫kembali ke Swarm, Swarm melakukan sedikit out-of-the-box di mana ia
‫memiliki label yang mencocokkan hal-hal dari tumpukan ke layanan,
‫dan tumpukan ke volume mereka, dan hal-hal seperti itu.
‫Kami tidak benar-benar bisa mengendalikannya, dan kami tidak melihatnya
‫banyak di antarmuka. Ini semacam dilakukan di
‫latar belakang bagi kita di Swarm.
‫Tapi, itu juga sangat terbatas.
‫Anda tidak dapat mengubah hal-hal dengan cepat.
‫Anda tidak dapat selalu pergi dan menyesuaikannya untuk pengaturan
‫yang benar-benar unik.
‫Di sini, kami mungkin dapat melakukan pembicaraan layanan
‫ke beberapa penyebaran jika kami ingin
‫mengubah penyeleksi tersebut.
‫Penyeleksi tidak hanya tentang menghubungkan sumber daya bersama.
‫Ini juga tentang mengendalikan ke mana mereka pergi.
‫Pada node, Anda dapat menggunakan label dan pemilih untuk mengontrol
‫kemana mereka pergi.
‫Anda bahkan dapat menggunakan penyesuaian lebih lanjut dengan hal-hal yang disebut
‫noda dan toleransi yang merupakan semacam kebalikan dari itu
‫di mana Anda memberi tahu node bahwa mereka tidak dapat melakukan hal-hal
‫tertentu sehingga Kubernetes tahu di mana pada dasarnya
‫mengontrol ke mana pod Anda pergi.
‫Hal-hal ini menjadi sangat khusus dan sangat
‫maju dengan cepat. Melakukan semuanya bersama
‫bisa sedikit berbulu dan gila.
‫Saya merekomendasikan Anda untuk melakukannya dengan lambat.
‫Simpan semuanya sederhana di luar kotak.
‫Hindari noda dan toleransi sampai Anda benar-benar
‫perlu melihatnya.
‫Baiklah. Mari kita bersihkan untuk seluruh bagian ini.
‫Jika Anda memiliki sesuatu yang berjalan di namespace default untuk cluster
‫Anda, jika Anda hanya mendapatkan kubectl semua, dan Anda
‫melihat hal-hal di sana di luar API Kubernetes itu sendiri,
‫maka silakan dan hapus semua sumber daya itu karena kita akan
‫pindah . Kami tidak akan membutuhkan itu.