‫Kubernetes banyak hal.
‫Saya ingin memecah beberapa topologi dasar
‫dan
‫bagian-bagian dari sistem sebelum kita menginstal
‫aplikasi di Kubernetes. Yang pertama adalah Kubernetes itu sendiri.
‫Pada dasarnya itulah yang saya bicarakan.
‫Seluruh sistem.
‫Entah satu server atau pengaturan multi
‫server dengan semua bagian yang ada untuk menjalankan aplikasi Anda.
‫Kami menyingkatnya kadang-kadang sebagai K8.
‫Biasanya ketika saya berbicara tentang Kubernetes, saya hanya akan
‫mengatakan Kubernetes, tetapi seringkali secara tertulis, atau
‫bahkan dalam dokumentasi, Anda akan melihat
‫K8s, dan yang pada dasarnya adalah versi pendek,
‫singkat dari Kubernetes. Jika Anda benar-benar
‫melihatnya, 8 berarti 8 huruf antara K dan S.
‫Itu sebabnya mereka melakukannya. K, delapan huruf, dan lalu S.
‫Itu singkatan mereka.
‫Terkadang orang mungkin menyebutnya Kube.
‫Tapi, pada dasarnya di sini kita akan berbicara tentang hal yang
‫sama ketika kita mengatakan Kubernet dan K8.
‫Sekarang kubectl adalah alat baris perintah yang akan Anda
‫gunakan untuk berbicara dengan API Kubernetes.
‫Cara utama kita berbicara dengan Kubernetes adalah melalui API-nya.
‫Ada banyak alat di luar sana yang dapat melakukannya.
‫Bahkan, ada banyak alat yang bisa mereka gunakan untuk berbicara dengan API.
‫Yang benar-benar datang secara resmi dari proyek dan kami akan
‫menggunakan sebagian besar waktu adalah kubectl.
‫Sekarang Anda mungkin melihat ini dirujuk dalam video lain,
‫atau pembicaraan, sebagai pelukan kubus,
‫atau pelukan kubus, atau kontrol kubus, semua jenis tipe
‫lain atau bahkan mungkin kubectl, tetapi semuanya adalah
‫hal yang sama.
‫Mereka pada dasarnya berbeda orang mengatakannya dengan
‫cara yang berbeda. Bahkan, sekitar setahun
‫yang lalu mereka memutuskan untuk secara resmi menyebut
‫alat ini kubectl dalam dokumentasi.
‫Tapi, tidak ada cara yang salah untuk mengatakannya.
‫Sama seperti dengan Swarm, di mana kita memanggil node server
‫yang ada di dalam cluster itu, Kubernetes juga
‫menyebut hal-hal sebagai node juga.
‫Jadi, terminologi itu setidaknya sama antara keduanya.
‫Kubelet adalah wadah yang akan menjalankan
‫agen kecil, kecil pada setiap node untuk memungkinkan
‫simpul itu untuk berbicara kembali ke master Kubernetes.
‫Ingat, karena Docker memiliki Swarm di dalamnya, itu tidak
‫benar-benar membutuhkan agen terpisah.
‫Itu semua dibangun ke dalam Mesin Docker.
‫Sekarang dengan Kubernet berjalan di atas itu, ia
‫membutuhkan API mesinnya sendiri yang berbicara dengan Docker lokal, atau
‫runtime lokal, mana pun itu.
‫Kemudian ia berbicara kembali ke bidang kontrol,
‫atau master, yang bertugas menjalankan cluster
‫Kubernetes.
‫Pesawat kontrol, kadang-kadang disebut master, adalah yang bertanggung
‫jawab atas cluster.
‫Jika Anda terbiasa dengan Swarm.
‫Di Swarm, kami memiliki manajer.
‫Mungkin ada satu atau lebih manajer.
‫Kami menginginkan sejumlah manajer yang aneh.
‫Lalu ada pekerja yang melakukan semua pekerjaan.
‫Jika Anda ingat dari Swarm, para manajer juga bisa
‫menjadi pekerja karena mereka juga bisa
‫menjalankan wadah sendiri. Jadi secara teknis Anda
‫hanya dapat memiliki satu server. Anda dapat memiliki banyak server
‫dan membagi dua peran. Banyak yang sangat mirip di Kubernetes.
‫Kami hanya memiliki nama yang sedikit berbeda untuk itu.
‫Pesawat kontrol, juga sesuatu yang
‫kami jalankan di Swarm, adalah bagian di mana
‫server menjalankan semua hal yang pada dasarnya
‫bertanggung jawab.
‫Ini lebih dari satu wadah. Ini sekelompok kontainer.
‫Mereka menjalankan hal-hal individual.
‫Mereka mengambil prinsip Linux untuk melakukan satu hal dan
‫melakukannya dengan baik, dan mereka mengambilnya dan
‫membagi semuanya. Jadi, pada dasarnya masing-masing
‫bagian ini melakukan satu hal dan melakukannya dengan baik, dan itu
‫menyederhanakan desain dalam hal pengembangan.
‫Tetapi ketika Anda harus membangun ini dan menjalankannya, itu memang
‫membuat hal-hal sedikit lebih sulit untuk diatur karena
‫ada lebih dari itu. Pesawat kendali ini mencakup
‫kontainer yang akan menjalankan API, scheduler, Anda sebenarnya membutuhkan
‫database backend yang akan menjadi sesuatu yang
‫disebut etcd.
‫Maka Anda memiliki manajer pengontrol.
‫Anda mungkin perlu sesuatu yang disebut coreDNS untuk menangani
‫DNS Anda, dan seterusnya.
‫Kami memiliki banyak bagian di sini, tetapi mari
‫kita letakkan di diagram dan lihat apakah ini membantu masuk akal.
‫Saya akan membandingkannya dengan Swarm karena Anda telah mempelajarinya
‫dalam kursus ini.
‫Jika Anda hanya memiliki satu mesin, seperti
‫yang akan kami lakukan dalam satu menit untuk belajar, semua hal yang
‫saya sebutkan sebelumnya semua akan berada di server yang sama.
‫Akan ada banyak kontainer berjalan. Itulah yang akan
‫Anda lihat pada hal-hal seperti minikube dan Docker Desktop saat
‫Anda menjalankan satu simpul Kubernetes.
‫Di dunia nyata ketika Anda masuk ke server, Anda akan
‫memecahkan hal ini. Saya pikir saya
‫akan menunjukkan kepada Anda dengan sangat cepat, pada diagram jaringan, bagaimana ini
‫terlihat dan menjelaskan bagian-bagian yang berbeda.
‫Pertama, anggaplah Anda memiliki master.
‫Dalam pengaturan multi-master, Anda akan memiliki
‫tiga di antaranya. Sama seperti dengan Swarm, Anda perlu
‫nomor ganjil karena menggunakan protokol RAFT yang sama untuk menjaga konsensus seperti
‫yang dilakukan Swarm.
‫Dalam dokumentasi, ini semua dikenal sebagai master.
‫Tapi, itu jadi sedikit membingungkan ketika Anda memiliki lebih dari satu
‫master karena setup yang sama di mana Anda hanya dapat
‫memiliki satu yang benar-benar melakukan pekerjaan menulis etcd.
‫Ini juga dikenal sebagai bidang kontrol.
‫Anda akan mengenali istilah itu dari Swarm,
‫yang merujuk secara khusus di
‫Swarm ke protokol melalui jaringan yang memungkinkan master dan
‫node untuk semua berbicara dengan aman untuk
‫memberikan pesanan. Tapi ini sedikit berbeda.
‫Pesawat kontrol berbicara tentang node master yang semuanya
‫membuat keputusan.
‫Sama seperti dengan Swarm, kami memiliki simpul pekerja.
‫Dalam dokumentasi, mereka hanya akan
‫disebut sebagai node. Terkadang, Anda melihat kata pekerja disebutkan.
‫Kita akan memanggil simpul-simpul itu di sini hanya agar konsisten.
‫Sekali lagi, seperti sebelumnya, semua ini dapat menjalankan
‫kontainer, tetapi umumnya Anda akan menyimpan
‫aplikasi Anda ke node dan sistem manajemen Kubernetes
‫ke master.
‫Semua ini berjalan di
‫atas Docker atau runtime kontainer lain seperti containerd
‫atau crio.
‫Di dalam setiap master, kita akan
‫perlu menjalankan beberapa kontainer untuk
‫mengendalikan sistem. Yang pertama adalah etcd.
‫Etcd adalah sistem penyimpanan terdistribusi untuk
‫nilai-nilai utama.
‫Ini sangat mirip dengan cara Swarm bekerja
‫dengan sistem algoritma RAFT.
‫Ini mirip dengan etcd, tetapi etcd adalah produk terpisah
‫dan merupakan sesuatu yang dapat Anda instal tanpa Kubernetes
‫hanya untuk menyimpan data konfigurasi.
‫Ia menggunakan protokol RAFT yang sama, jadi banyak aturan
‫yang sama berlaku. Anda membutuhkan angka ganjil.
‫Anda bisa mulai dengan satu, tetapi jika Anda ingin toleransi kesalahan
‫yang benar, Anda perlu tiga.
‫Dan seterusnya. Selain itu, Anda
‫harus menjalankan beberapa wadah Kubernetes yang akan menyimpan
‫data di dalam etcd dan mengelola cluster.
‫Pertama adalah API, yang akan menjadi cara kami
‫berbicara dengan kluster ini dan mengeluarkan perintah untuk itu.
‫Selanjutnya adalah wadah penjadwal, yang akan mengontrol bagaimana dan
‫di mana wadah Anda ditempatkan pada node di objek
‫yang disebut pod.
‫Selanjutnya adalah manajer pengontrol, yang melihat keadaan seluruh cluster, dan semua
‫yang berjalan di dalamnya, dan ia menggunakan
‫API untuk melakukan itu.
‫Dibutuhkan perintah yang memberikannya, atau spesifikasi, dan menentukan perbedaan
‫antara apa yang Anda minta untuk lakukan dan
‫apa yang sebenarnya terjadi.
‫Ini pada dasarnya adalah
‫sebuah loop yang melihat seluruh sistem dan mencari tahu
‫bagaimana membuat semua yang saat ini terjadi sama
‫dengan apa yang Anda minta lakukan. Maka Anda akan membutuhkan sesuatu untuk mengontrol
‫DNS, yang tidak ada di dalamnya, dan secara default, itu adalah coreDNS.
‫Bergantung pada pengaya lain yang Anda dapatkan nanti, seperti
‫jaringan atau penyimpanan, web, dan fitur lainnya, Anda akan
‫memiliki lebih banyak wadah yang berjalan di
‫sini juga.
‫Pada semua node, mereka membutuhkan agen yang berjalan.
‫Itu dikenal sebagai kubelet.
‫Untuk memulainya, Anda perlu kube-proxy untuk
‫mengontrol jaringan.
‫Sama seperti dengan Docker, semua ini akan diulangi
‫untuk peran mereka. Para master, jika Anda
‫akan melakukan multi master, akan mengatur semua wadah yang sama.
‫Setiap node yang Anda tetapkan untuk node pekerja
‫juga akan memiliki setidaknya dua kontainer di
‫sana untuk manajemen. Kubernetes dirancang untuk menyelesaikan
‫banyak masalah dengan berbagai cara.
‫Anda akan menemukan diri Anda mungkin menambahkan lebih banyak hal
‫ke master, lebih banyak hal ke node, seperti jaringan.
‫Di sisi master, ada banyak alat opsional lain untuk ditambahkan
‫ke dalamnya juga.
‫Mari kita mulai menginstal ini pada sistem lokal Anda untuk
‫belajar.