Diterbitkan: 21 November 2023
Kontributor: Stephanie Susnjara, Ian Smalley
Jaringan Kubernetes menyediakan infrastruktur jaringan untuk memungkinkan komunikasi, skalabilitas, keamanan, dan akses eksternal untuk aplikasi yang dikontainerisasi. Jaringan ini kompleks dan melibatkan komunikasi antara semua komponen utama yang berada di dalam (misalnya, pod, node, kontainer, layanan) dan di luar (misalnya, lalu lintas eksternal) kluster Kubernetes.
Komponen-komponen ini bergantung pada empat metode jaringan yang berbeda untuk berkomunikasi:
1. Jaringan kontainer ke kontainer
2. Jaringan pod ke pod
3. Jaringan pod ke layanan
4. Jaringan eksternal-ke-layanan
Untuk insinyur platform dan DevOps yang ingin mengoperasionalkan kecepatan ke pasar sambil memastikan kinerja aplikasi.
Berlangganan buletin IBM
Nama Kubernetes berasal dari bahasa Yunani, yang berarti juru mudi atau pilot. Berdasarkan Borg, platform orkestrasi kontainer internal Google, Kubernetes diperkenalkan ke publik sebagai alat sumber terbuka pada tahun 2014. Pada tahun yang sama, Google menyumbangkan Kubernetes ke Cloud Native Computing Foundation (tautan berada di luar ibm.com), sebuah pusat komputasi awan yang bersifat sumber terbuka dan netral terhadap vendor. Sejak saat itu, Kubernetes telah menjadi alat orkestrasi kontainer yang paling banyak digunakan untuk menjalankan beban kerja berbasis kontainer di seluruh dunia.
Kubernetes, disebut juga sebagai "k8s" atau "kube", didesain secara eksplisit untuk mengotomatiskan pengelolaan kontainer, yaitu unit standar perangkat lunak yang mengemas kode dan semua ketergantungannya. Alat orkestrasi ini sangat dihargai karena dapat berjalan dengan cepat dan andal di lingkungan infrastruktur apa pun, baik on premises, cloud pribadi, cloud publik, maupun cloud hibrida.
Tidak seperti mesin virtual (VM) yang memvirtualisasikan perangkat keras fisik, kontainer memvirtualisasikan sistem operasi (seperti Linux atau Windows). Setiap kontainer hanya menampung pustaka dan ketergantungan aplikasi. Karena kontainer berbagi kernel sistem operasi yang sama dengan host, kontainer dianggap ringan, cepat, dan portabel.
Kubernetes dan ekosistem layanan, dukungan, dan alatnya telah menjadi fondasi untuk infrastruktur cloud modern dan modernisasi aplikasi. Semua penyedia cloud utama, termasuk Amazon Web Services (AWS), Google, Microsoft, IBM, dan Red Hat, mengintegrasikan Kubernetes dalam platform cloud mereka untuk meningkatkan kemampuan Platform-as-a-Service (PaaS ) dan Infrastructure-as-a-Service (IaaS ).
Komponen dasar berikut terdiri dari arsitektur Kubernetes:
Kluster Kubernetes adalah sekumpulan mesin fisik atau virtual (node) yang bekerja sama untuk menjalankan aplikasi dalam kontainer. Kluster membentuk fondasi arsitektur Kubernetes.
Node master mewakili satu host komputasi, baik mesin virtual maupun fisik. Mereka menjadi host bagi komponen bidang kontrol Kubernetes dan bertanggung jawab atas penjadwalan dan penskalaan aplikasi. Dengan mengelola semua sumber daya komputasi, jaringan, dan penyimpanan dalam klaster Kubernetes, node master memastikan aplikasi dan layanan yang terkontainerisasi diterapkan secara merata ke node pekerja dalam klaster.
Node pekerja bertanggung jawab untuk menjalankan kontainer dan melakukan pekerjaan apa pun yang ditugaskan oleh node master. Node juga menjadi host kontainer aplikasi, yang dikelompokkan sebagai pod.
Pod adalah kelompok dari satu atau lebih kontainer (seperti Linux atau Docker) yang berbagi sumber daya komputasi dan jaringan yang sama. Mereka adalah unit penerapan klaster yang juga berfungsi sebagai unit skalabilitas. Misalnya, jika kontainer dalam pod mengalami volume lalu lintas yang padat, Kubernetes dapat mereplikasi pod tersebut ke node lain dalam klaster. Kubernetes juga dapat mematikan pod jika volume lalu lintas menurun.
Komponen tambahan Kubernetes mencakup hal berikut:
Jaringan komputer dasar melibatkan menghubungkan dua atau lebih perangkat komputasi untuk berbagi data dan bertukar sumber daya, baik dengan kabel atau WiFi.
Dalam jaringan fisik, server fisik terhubung ke peralatan jaringan fisik - sakelar, router, dan kabel ethernet untuk terhubung ke Internet.
Dalam jaringan virtual, jaringan yang ditentukan oleh perangkat lunak (SDN), komponen seperti perangkat ethernet virtual dan antarmuka virtual diinstal pada bare metal server atau mesin virtual untuk terhubung ke Internet. Penerapan Kubernetes mengandalkan SDN untuk mengonfigurasi dan mengelola komunikasi jaringan di seluruh kluster.
Sebelum mempelajari lebih dalam tentang jaringan Kubernetes, ada baiknya meninjau istilah-istilah jaringan dasar:
Kubernetes dibuat untuk menjalankan sistem terdistribusi dengan bidang jaringan yang tersebar di sekelompok mesin. Selain menyediakan interkonektivitas antar komponen, jaringan kluster Kubernetes menciptakan lingkungan yang mulus di mana data dapat bergerak dengan bebas dan efisien melalui jaringan yang ditentukan oleh perangkat lunak.
Fitur lain yang berbeda dari jaringan Kubernetes adalah struktur jaringannya yang datar, yang berarti semua komponen bisa terhubung tanpa bergantung pada perangkat keras lain. Di Kubernetes, setiap pod dalam klaster dapat berkomunikasi dengan setiap pod lainnya, apa pun node yang dijalankannya. Jaringan datar menyediakan cara yang efisien untuk berbagi sumber daya dan menghilangkan kebutuhan akan alokasi port yang dinamis.
Secara keseluruhan, jaringan Kubernetes mengabstraksi kompleksitas, sehingga pengembang dan operator dapat fokus pada membangun dan memelihara aplikasi daripada berurusan dengan konfigurasi jaringan yang rumit.
Kubernetes menyediakan model jaringan untuk membantu mengatasi tantangan dalam mengatur aplikasi yang terkontainerisasi di lingkungan terdistribusi. Runtime kontainer pada setiap node mengimplementasikan model jaringan dan mengikuti aturan berikut:
Model jaringan Kubernetes berlaku untuk empat jenis dasar komunikasi Kubernetes:
Kontainer adalah unit terkecil dalam jaringan Kubernetes. Dalam konfigurasi jaringan dasar, kontainer berkomunikasi dalam satu pod melalui localhost. Komunikasi ini dapat terjadi karena kontainer dalam pod yang sama berbagi ruang nama jaringan yang sama, yang mencakup sumber daya jaringan seperti penyimpanan, alamat IP, dan ruang port.
Komunikasi pod ke pod mencakup komunikasi antara pod pada node yang sama serta komunikasi antara pod pada node yang berbeda. Setiap pod dalam klaster Kubernetes memiliki alamat IP uniknya sendiri, sehingga memungkinkan komunikasi langsung antar pod terlepas dari node tempat pod tersebut berada. Selain itu, setiap klaster Kubernetes secara otomatis menyediakan DNS service (layanan sistem nama domain) sebagai tambahan untuk alamat IP pod. DNS service di mana nama-nama ditetapkan ke pod (dan layanan) menciptakan nama yang mudah dibaca oleh administrator, menyediakan mekanisme yang ringan untuk penemuan layanan.
Layanan di Kubernetes adalah abstraksi yang mendefinisikan sekumpulan pod secara logis dan memungkinkan pemaparan lalu lintas eksternal, penyeimbangan beban, dan penemuan layanan ke pod-pod tersebut. Layanan memfasilitasi komunikasi pod-ke-layanan dan eksternal-ke-layanan.
Menurut model jaringan Kubernetes, alamat IP pod bersifat sementara. Oleh karena itu, jika sebuah pod mengalami kerusakan atau dihapus dan pod baru dibuat sebagai gantinya, pod baru kemungkinan besar akan menerima alamat IP baru.
Dalam komunikasi pod ke layanan, ClusterIP adalah jenis layanan yang menyediakan alamat IP virtual yang stabil untuk sekumpulan pod. IP internal ini hanya dapat dijangkau di dalam klaster dan dapat digunakan untuk komunikasi internal antara pod dan layanan.
Kube-proxy, yang diinstal pada setiap node dalam kluster, memelihara aturan jaringan pada host dan memantau perubahan dalam layanan dan pod. Saat pod dibuat atau dihancurkan, kube-proxy memperbarui iptables (program utilitas yang digunakan untuk membuat aturan pada firewall kernel Linux untuk merutekan lalu lintas) untuk mencerminkan perubahan tersebut sehingga lalu lintas yang dikirim ke IP layanan dirutekan dengan benar.
Jaringan eksternal-ke-layanan mengacu pada pemaparan dan pengaksesan layanan, seperti layanan eksternal atau database, dari luar kluster Kubernetes.
Kubernetes menyediakan beberapa layanan untuk memfasilitasi lalu lintas eksternal ke dalam klaster:
Kebijakan jaringan Kubernetes adalah konstruksi aplikasi yang memainkan peran penting dalam jaringan Kubernetes. Kebijakan ini memungkinkan administrator dan pengembang untuk menetapkan aturan yang menentukan bagaimana pod dapat berkomunikasi satu sama lain dan titik akhir jaringan lainnya. Kebijakan jaringan diterapkan menggunakan API Kebijakan Jaringan Kubernetes dan terdiri dari komponen dasar berikut:
Kebijakan jaringan Kubernetes membantu mendefinisikan dan mengelola kebijakan keamanan dengan menentukan aturan yang mengontrol pod mana yang dapat berkomunikasi satu sama lain, sehingga mencegah akses yang tidak sah dan mencegah serangan berbahaya. Kebijakan jaringan juga memastikan isolasi antara pod dan layanan sehingga hanya pod atau layanan tersebut yang dapat berkomunikasi dengan sekumpulan rekan yang diizinkan. Misalnya, isolasi sangat penting untuk situasi multi-tenancy ketika DevOps atau tim lain berbagi klaster Kubernetes yang sama namun mengerjakan proyek yang berbeda.
Untuk perusahaan dengan persyaratan kepatuhan khusus, kebijakan jaringan membantu menentukan dan menerapkan kontrol akses jaringan. Hal ini membantu memenuhi standar peraturan dan memastikan klaster mematuhi kebijakan organisasi.
Antarmuka Jaringan Kontainer (CNI) adalah fitur penting lainnya yang terkait dengan jaringan Kubernetes. Dibuat dan dikelola oleh Cloud Native Computing Foundation dan digunakan oleh Kubernetes dan runtime kontainer lainnya, termasuk RedHat OpenShift® dan Apache Mesos, CNI merupakan spesifikasi standar dan kumpulan API yang menentukan bagaimana plug-in jaringan memungkinkan jaringan kontainer. Plug-in CNI dapat menetapkan alamat IP, membuat namespace jaringan, mengatur rute jaringan, dan seterusnya untuk memungkinkan komunikasi pod ke pod, baik di dalam node yang sama maupun di seluruh node.
Meskipun Kubernetes menyediakan CNI default, banyak plug-in CNI pihak ketiga, termasuk Calico, Flannel, dan Weave, dirancang untuk menangani konfigurasi dan keamanan dalam lingkungan jaringan berbasis kontainer. Meskipun masing-masing mungkin memiliki fitur dan pendekatan yang berbeda terhadap jaringan, seperti jaringan hamparan atau perutean langsung, semuanya mematuhi spesifikasi CNI yang kompatibel dengan Kubernetes.
Jika Anda ingin mulai bekerja dengan Kubernetes atau ingin meningkatkan kemampuan Anda yang sudah ada dengan Kubernetes dan alat ekosistem Kubernetes, cobalah salah satu dari tutorial berikut ini.
Pelatihan berbasis browser interaktif untuk menerapkan dan mengoperasikan klaster pada IBM Cloud Kubernetes Service.Tidak perlu unduhan atau konfigurasi.
Menerapkan kluster yang kaya keamanan dan sangat tersedia di pengalaman Kubernetes asli.
Red Hat OpenShift on IBM Cloud menawarkan cara yang cepat dan aman bagi para pengembang untuk mengkontainerisasi dan menerapkan beban kerja perusahaan dalam klaster Kubernetes.
Platform tanpa server yang dikelola sepenuhnya, IBM Cloud Code Engine memungkinkan Anda menjalankan kontainer, kode aplikasi, atau pekerjaan batch pada runtime kontainer yang dikelola sepenuhnya.
Membangun keterampilan Kubernetes melalui kursus yang terdapat dalam sertifikasi IBM Cloud Professional Developer.
Para siswa memamerkan karya seni mereka bersama Red Hat® OpenShift® on IBM Cloud®.
Kontainer adalah bagian dari strategi hybrid cloud yang memungkinkan Anda membangun dan mengelola beban kerja dari mana saja.
Kubernetes adalah platform orkestrasi kontainer untuk menjadwalkan dan mengotomatiskan penerapan, pengelolaan, dan penskalaan aplikasi dalam kontainer.
Kontainer adalah unit perangkat lunak yang dapat dieksekusi di mana kode aplikasi dikemas bersama dengan pustaka dan dependensinya, dengan cara yang umum sehingga kode tersebut dapat dijalankan di mana saja.
Orkestrasi kontainer mengotomatiskan dan menyederhanakan penyediaan, serta penerapan dan pengelolaan aplikasi dalam kontainer.