Jaringan Kubernetes: Panduan Lengkap untuk Memahami Model Jaringan
Diterbitkan: 2020-02-18Manajemen kontainer adalah aspek penting dari jaringan. Dengan kebutuhan lalu lintas yang berubah saat ini, pentingnya Kubernetes telah meningkat sepuluh kali lipat. Dan jika Anda tertarik untuk belajar tentang jaringan, Anda harus mengenal Kubernetes terlebih dahulu. Mempelajari Kubernetes akan membantu Anda menangani manajemen container secara efektif. Kubernetes juga merupakan salah satu alat DevOps teratas di pasar untuk tahun 2020.
Tapi jangan khawatir karena, dalam panduan terperinci ini, kita akan membahas hal yang sama. Kubernetes adalah alat manajemen kontainer, dan dalam artikel ini, Anda akan mempelajari mengapa itu digunakan, apa saja komponen jaringannya, dan bagaimana mereka mengarahkan lalu lintas.
Pelajari Rekayasa Perangkat Lunak secara online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.
Mari selami.
Daftar isi
Apa itu Kubernetes?
Sebelum kita mulai membahas jaringan di Kubernetes, kita harus mempertimbangkan konsep dasar alat ini. Dengan cara ini, Anda tidak akan menghadapi kebingungan di kemudian hari dalam artikel dan memiliki pemahaman dasar tentang semua yang disebutkan di sini.
Kubernetes adalah alat orkestrasi wadah sumber terbuka. Ini membantu Anda mengelola container, yang telah menjadi aspek paling kritis dari jaringan akhir-akhir ini. Kubernetes memiliki banyak fungsi, termasuk penskalaan container, penyebaran container, pembersihan kerak container, dll.

Sementara Docker membantu para profesional dalam membuat container, Kubernetes membantu mereka dalam mengelolanya. Itulah mengapa keduanya sangat penting. Kubernetes menjalankan sistem terdistribusi melalui sebuah cluster. Memahami struktur dan jaringannya akan memungkinkan Anda menghindari kesalahan dan mengelola container tanpa kesalahan.
Mengapa Kubernetes digunakan?
Persyaratan kontainer perusahaan telah meningkat pesat dalam beberapa tahun terakhir. Kecuali mereka terlalu kecil, mereka tidak bisa mengandalkan satu atau dua wadah. Mereka perlu memiliki satu set kontainer besar untuk penyeimbangan muatan. Persyaratannya bisa ratusan untuk mempertahankan ketersediaan tinggi dan untuk menyeimbangkan lalu lintas.
Ketika lalu lintas akan meningkat, mereka akan membutuhkan lebih banyak wadah untuk menangani permintaan. Demikian pula, ketika lalu lintas akan lebih sedikit, mereka perlu mengurangi kontainer. Mengelola kontainer sesuai permintaan bisa jadi menantang, terutama jika Anda melakukannya secara manual.
Mengatur wadah secara manual dapat memakan banyak waktu dan sumber daya, yang akan dengan mudah dihabiskan di tempat lain. Mengotomatiskan tugas ini membuat segalanya jauh lebih sederhana. Maka Anda tidak perlu khawatir tentang penskalaan dan pembersihan kerak wadah. Itulah yang dilakukan Kubernetes. Baca cara membuat proyek DevOps untuk pemula dengan bantuan Kubernetes di artikel proyek DevOps untuk pemula teratas kami.
Ini mengotomatiskan orkestrasi dan pengelolaan kontainer. Ini sangat populer karena fungsinya. Ini adalah produk Google, dan kinerjanya sangat membantu organisasi dalam mengotomatiskan penskalaan container.
Komponen Kubernetes
Sekarang setelah Anda mengetahui apa itu Kubernetes dan apa fungsinya, kita dapat mulai membahas beberapa komponennya. Anda dapat memahami jaringan di alat ini hanya setelah mengenal bagian-bagiannya yang berbeda. Namun, tidak banyak yang perlu dikhawatirkan. Itu karena kami di sini untuk membantu. Berikut ini adalah deskripsi singkat dari berbagai komponennya. Meskipun deskripsinya singkat, itu seharusnya cukup untuk memberi Anda gambaran umum.
polong
Ingat atom dalam kimia, benda independen terkecil dari materi? Nah, Pod adalah atom dari Kubernetes. Satu Pod adalah beban kerja dalam sebuah cluster. Ini dapat berisi satu atau beberapa wadah dengan penyimpanan. Setiap Pod memiliki alamat IP unik yang bertindak sebagai identitasnya saat berinteraksi dengan komponen Kubernetes lainnya. Semua kontainer pod dijadwalkan dan ditempatkan di dalam mesin yang sama.
Pengendali
Controller membangun Kubernetes. Pengontrol mengawasi status server API untuk memastikan bahwa statusnya saat ini cocok dengan status yang Anda tentukan. Jika status server API berubah karena suatu alasan, ia akan bereaksi sesuai dengan itu. Pengontrol menggunakan loop untuk memeriksa status cluster dan membandingkannya dengan status yang diperlukan. Itu juga dapat melakukan tugas untuk mengubah keadaan saat ini menjadi keadaan yang diperlukan.
Node
Jika Pod adalah atomnya, Node adalah roda gigi Kubernetes. Mereka menjalankan cluster. Mesin virtual adalah node yang dapat diakses di cluster Kubernetes. Banyak orang cenderung menggunakan kata 'host' daripada 'node'. Kami telah mencoba menggunakan istilah node secara konsisten dalam artikel ini.
Server API
Server API adalah pintu gerbang ke datastore di Kubernetes. Ini memungkinkan Anda menentukan status yang diinginkan untuk cluster. Anda harus melakukan panggilan API jika ingin mengubah status cluster Kubernetes dan menjelaskan status yang Anda perlukan.
Karena Anda sudah familiar dengan komponen jaringan Kubernetes, kita bisa mulai dengan model jaringan dan cara kerjanya.
Penjelasan Jaringan Kubernetes
Jaringan Kubernetes mengikuti model spesifik yang memiliki batasan berikut:
- Pod berkomunikasi dengan semua Pod lain tanpa terjemahan alamat jaringan
- Nod dapat berkomunikasi dengan Pod tanpa terjemahan alamat jaringan
- IP dari sebuah Pod yang dilihat oleh Pod lain adalah IP yang sama dengan yang dilihatnya sendiri
Karena batasan ini, Kubernetes hanya memiliki beberapa bagian jaringan. Mereka:
- Transfer Kontainer ke Kontainer
- Transfer pod ke pod
- Pod ke transfer layanan
- Internet ke layanan transfer
Kontainer ke Kontainer
Anda mungkin berpikir bahwa dalam jaringan, mesin virtual berinteraksi dengan perangkat ethernet secara langsung, tetapi ada lebih dari itu.
Jika Anda menggunakan Linux, namespace jaringan akan memberi Anda tumpukan jaringan yang memiliki perangkat jaringan, rute, dan aturan untuk firewall. Setiap proses yang berjalan di Linux akan berkomunikasi dengan namespace jaringan ini.
Sebuah Pod memiliki sekelompok container di dalam namespace jaringan. Kontainer ini memiliki ruang port dan alamat IP yang sama, yang ditetapkan melalui ruang nama jaringan. Wadah ini menemukan satu sama lain melalui localhost karena mereka berada di namespace yang sama. Jika aplikasi Anda berada di dalam pod, mereka juga dapat mengakses volume bersama.

Pod ke Pod
Pod berkomunikasi satu sama lain melalui alamat IP mereka. Setiap Pod memiliki alamat IP yang nyata dan berbeda di Kubernetes. Kamu sudah tahu apa itu Pod, jadi kita tidak perlu menyentuh topik itu. Kita tahu bahwa Kubernetes menggunakan IP untuk memfasilitasi komunikasi antar pod; mari kita bahas bagaimana melakukannya.
Pod berkomunikasi melalui node mereka. Itulah mengapa untuk memahami komunikasi Pod ke Pod, dan Anda harus memahami interaksi antar node.
- Komunikasi Antar Node
- Komunikasi Intra Node
Kami akan membahas masing-masing secara rinci:
Komunikasi Antar Node
Ketika node terletak di pod yang berbeda, mereka akan berkomunikasi melalui metode ini. Kita dapat memahami metode komunikasi ini melalui contoh yang mudah. Misalkan ada empat macam jaringan pod, yaitu pod 1, pod 2, pod 3, dan seterusnya. Pod 1 dan 2 terletak di jaringan root Node 1, dan Pod 3 dan 4 terletak di jaringan ke-2.
Anda perlu mentransfer paket dari pod 1 ke pod 4.
Paket pertama-tama harus meninggalkan jaringan pod 1 dan masuk ke jaringan root melalui veth0. Ia melewati jembatan Linux, yang membantunya menemukan tujuannya. Karena node tidak memiliki tujuan di dalam Podnya, node tersebut dikirim kembali ke antarmuka eth0. Sekarang ia meninggalkan node pertama untuk tabel rute. Tabel rute merutekan paket ke node yang diperlukan, yang terletak di pod4. Paket pertama mencapai node 2, kemudian mencapai jembatan, yang mengarahkannya ke tujuannya.
Komunikasi Intra Node
Komunikasi Intra Node terjadi ketika node berada di Pod yang sama. Kita dapat menjelaskan komunikasi intra node dengan cara yang sama seperti kita menjelaskan komunikasi antar node. Dalam kasus ini, paket berjalan dari Pod pertama di eth0. Itu masuk ke jaringan root melalui veth0. Kemudian harus melewati jembatan setelah itu, ia menuju ke IP yang ditunjuk.
Begitulah cara pod berkomunikasi satu sama lain di Kubernetes. Mari beralih ke bagian berikutnya.
Pod ke Layanan
Anda telah melihat di bagian sebelumnya bagaimana lalu lintas dirutekan antara alamat IP pod. Namun, ada masalah dengan alamat IP. IP Pod dapat menghilang dan muncul kembali sesuai dengan penskalaan container. Jadi, jika container di-scale, jumlah IP pod akan meningkat, begitu juga sebaliknya.
Layanan membantu dalam pengelolaan situasi ini. Berikut penjelasan singkat tentang layanan apa saja yang ada di Kubernetes, agar Anda tidak bingung.
Apa itu Layanan di Kubernetes?
Layanan di Kubernetes mengonfigurasi proxy yang harus mentransfer permintaan ke sekelompok pod. Pod tersebut mendapatkan lalu lintas, dan pemilih menangani tugas ini. Setelah pembuatan layanan, ia menerima alamat IP yang menangani permintaannya. Ada beberapa jenis layanan, dan kita harus mendiskusikannya sebelum beralih ke Pod untuk komunikasi layanan.
Ada total 4 jenis layanan di Kubernetes. Mereka:
- ClusterIP
- NodePort
- LoadBalancer
- Nama Eksternal
ClusterIP adalah jenis layanan default. Pada tipe ini, layanan hanya dapat diakses di cluster. Di NodePort, layanan diekspos ke setiap IP node. NodePort merutekan ke layanan ClusterIP saat sistem membuatnya sebelumnya. Tidak seperti ClusterIP, Anda dapat menghubungi layanan ini di luar cluster.
LoadBalancer menggunakan penyeimbang beban awan untuk mengekspos layanan ke jaringan eksternal. NodePort dan ClusterIP secara otomatis dibuat karena itu, dan layanan ExternalName mentransfernya karena mencerminkan catatan CNAME.
Sekarang setelah Anda mengetahui apa itu layanan dan berapa banyak jenis layanan yang ada, mari kita bahas bagaimana komunikasi Pod ke layanan terjadi.
Bagaimana itu bekerja?
Dalam skenario ini, paket meninggalkan Pod melalui eth0. Ia pergi ke jembatan melalui perangkat Ethernet dari mana ia ditransfer ke rute default eth0. Namun, itu harus melalui iptables sebelum diterima di eth0. Iptables menentukan tujuan paket dengan menggunakan aturan tertentu yang dimilikinya, dan mengirimkan paket ke Pod yang diperlukan. Setelah itu selesai, paket pergi ke IP asli pod alih-alih IP virtual layanan.
Eksternal ke Layanan
Tiga metode perutean lalu lintas sebelumnya hanya berkaitan dengan Kubernetes. Namun dalam kasus nyata, kemungkinan besar, Anda harus menghubungkan jaringan Kubernetes Anda ke jaringan pihak ketiga untuk merutekan lalu lintas. Dan bagian ini hampir sama.
Saat terhubung dengan jaringan eksternal, Kubernetes dapat melakukan dua fungsi:
- Rutekan lalu lintas dari internet ke jaringannya
- Rutekan lalu lintas dari jaringannya ke internet
Yang pertama membutuhkan jaringan Ingress, dan yang terakhir membutuhkan jaringan Egress. Mari kita lihat mereka.
Masuknya
Merutekan lalu lintas Anda dari jaringan publik ke sistem Kubernetes Anda sangat rumit. Ini membutuhkan LoadBalancer dan Controller untuk menangani paket. Berikut adalah contoh cara kerjanya.
Pertama, Anda akan menerapkan layanan, dan penyedia cloud Anda akan membuat penyeimbang beban baru. Penyeimbang beban akan mendistribusikan lalu lintas di seluruh mesin virtual dalam kluster Anda dengan menggunakan port yang ditunjuk dari layanan Anda. Di sini, iptables mentransfer lalu lintas yang mereka dapatkan dari penyeimbang beban ke Pod yang diperlukan. Pod akan merespons klien dengan IP-nya, dan conntrack membantu menulis ulang IP dengan cara yang benar.
Penyeimbang beban Layer-7 yang ada di jaringan mampu mengelompokkan lalu lintas masuk menurut URL dan jalur. Ini sangat membantu ketika Anda bekerja dengan jaringan Ingress.
Jalan keluar
Saat Anda merutekan lalu lintas dari simpul jaringan Kubernetes Anda ke internet, itu sangat bergantung pada konfigurasi jaringan Anda tentang bagaimana semuanya akan bekerja. Kami akan membahas contoh umum di sini untuk menyentuh topik.
Paket dimulai dari namespace Pod dan pergi ke namespace root melalui veth. Kemudian ia menuju ke jembatan dari mana ia melakukan perjalanan ke layanan default karena IP yang harus dituju tidak terhubung dengan jembatan. Itu melewati iptables saat pergi ke root namespace .

Baca: Prasyarat untuk DevOps: Bukan seperti yang Anda pikirkan
Sekarang gateway Internet hanya menerima alamat IP yang terhubung dengan mesin virtual. Dan pod sumber saku kami tidak terhubung dengan VM. Jadi iptables melakukan NAT sumber dan mengubah sumber paket. Sekarang mencapai gateway internet di mana ia melewati NAT lain dan kemudian memasuki internet publik (tujuannya).
Dan ini dia. Sekarang Anda tahu semua tentang jaringan Kubernetes dan berbagai komponennya.
Kesimpulan
Kubernetes tidak diragukan lagi salah satu alat penting yang harus Anda pelajari jika Anda tertarik dengan jaringan. Mereka yang tidak akrab dengan bidang ini tidak akan tahu betapa pentingnya itu. Mengelola container dan merutekan lalu lintas sesuai dengan persyaratan lalu lintas tersebut dapat sangat membantu Anda. Kami telah mencoba untuk menjaga panduan ini sejelas mungkin untuk membantu Anda memahami segalanya.
Jika Anda ingin belajar dan menguasai Kubernetes, DevOps, dan banyak lagi, lihat Program PG Eksekutif IIIT-B & upGrad dalam Pengembangan Perangkat Lunak- Spesialisasi dalam Pengembangan Full Stack.