Jaringan Kubernetes - Panduan Lengkap Mengenai Konsep Jaringan Di Kubernetes



Blog di Kubernetes Networking ini akan mendalami konsep-konsep yang terlibat dalam Kubernetes seperti komunikasi dengan pod, layanan, dan jaringan masuk.

Di blog sebelumnya pada , Anda pasti sudah paham tentang Kubernetes. Di blog tentang jaringan Kubernetes ini, saya terutama akan fokus pada konsep jaringan yang terlibat dalam Kubernetes.

Di blog Kubernetes Networking ini, Anda akan memahami topik-topik berikut:





Apa Itu Kubernetes?

Anda dapat mendefinisikan Kubernetes sebagai alat orkestrasi container open-source yang menyediakan platform portabel untuk mengotomatiskan penerapan aplikasi dalam container.

Sekarang, siapa pun yang bekerja dengan Kubernetes harus memiliki pemahaman yang jelas tentang Kubernetes Cluster karena itu akan membantu Anda dalam memahami Jaringan Kubernetes.



Cluster Kubernetes

Platform Kubernetes menawarkan manajemen status yang diinginkan, yang memungkinkan layanan cluster untuk berjalan, konfigurasi feed dalam infrastruktur. Izinkan saya menjelaskan dengan sebuah contoh.

Pertimbangkan file YAML yang memiliki semua informasi konfigurasi yang perlu dimasukkan ke layanan cluster. Jadi, file ini diumpankan ke API layanan cluster, dan kemudian akan diserahkan ke layanan cluster untuk mencari tahu cara menjadwalkan pod di lingkungan. Jadi, misalkan ada dua gambar container untuk pod 1 dengan tiga replika, dan satu gambar container untuk pod 2 dengan dua replika, bergantung pada layanan cluster untuk mengalokasikan pasangan pod-replika ini ke pekerja.

kapan harus menggunakan ini di java

Cluster Kubernetes - Jaringan Kubernetes - Edureka



Lihat diagram di atas. Sekarang, seperti yang Anda lihat bahwa layanan cluster telah mengalokasikan pekerja pertama dengan dua pasangan replika pod, pekerja kedua dengan satu pasangan replika pod, dan pekerja ketiga dengan dua pasangan replika pod. Sekarang, ini adalah proses Kubelet yang bertanggung jawab untuk mengkomunikasikan layanan cluster dengan pekerja.

Jadi, seluruh pengaturan layanan cluster ini dan para pekerja itu sendiri yang membuat ini Kluster Kubernetes !!

Bagaimana, menurut Anda pod yang dialokasikan secara individual ini berkomunikasi satu sama lain?

Jawabannya ada pada Kubernetes Networking!

Berlangganan saluran youtube kami untuk mendapatkan pembaruan baru ..!

Ada 4 masalah utama yang harus dipecahkan dengan konsep jaringan.

  • Wadah ke wadah komunikasi
  • Komunikasi Pod ke Pod
  • Pod ke komunikasi layanan
  • Komunikasi eksternal ke layanan

Sekarang, izinkan saya memberi tahu Anda bagaimana masalah di atas diselesaikan dengan Kubernetes Networking.

Jaringan Kubernetes

Komunikasi antara pod, layanan, dan layanan eksternal dengan yang ada di dalam kluster membawa konsep jaringan Kubernetes.

Jadi, untuk pemahaman Anda yang lebih baik izinkan saya membagi konsep menjadi berikut.

  • Pod & Komunikasi Kontainer
  • Jasa
  • Menghubungkan Eksternal ke Layanan melalui Jaringan Ingress

Pod & Komunikasi Kontainer

Sebelum saya memberi tahu Anda bagaimana pod berkomunikasi, izinkan saya memperkenalkan Anda apa itu pod?

Pod

Pod adalah unit dasar aplikasi Kubernetes, yang terdiri dari satu atau beberapa container yang dialokasikan pada host yang sama untuk berbagi tumpukan jaringan dan resource lainnya. Jadi, ini menyiratkan bahwa semua container di dalam pod dapat menjangkau yang lain di host lokal.

Sekarang, izinkan saya menjelaskan kepada Anda tentang bagaimana pod ini berkomunikasi?

Ada 2 jenis komunikasi. Itu komunikasi antar node dan komunikasi intra-node.

Jadi, mari kita mulai dengan komunikasi intra-node, tetapi sebelumnya izinkan saya memperkenalkan kepada Anda komponen jaringan pod.

Intra-node Di Bawah Jaringan

Jaringan pod intra-node pada dasarnya adalah komunikasi antara dua node berbeda pada pod yang sama. Izinkan saya menjelaskan kepada Anda dengan sebuah contoh.

Asumsikan sebuah paket berpindah dari pod1 ke pod2.

  • Paket meninggalkan jaringan Pod 1 di eth0 dan memasuki jaringan root di veth0
  • Kemudian, paket tersebut melewati jembatan Linux (cbr0) yang menemukan tujuan menggunakan permintaan ARP
  • Jadi, jika veth1 memiliki IP, bridge sekarang tahu kemana harus meneruskan paket.

Sekarang, izinkan saya memberi tahu Anda tentang komunikasi pod antar-node.

Tertarik Mempelajari Kubernetes?
Inter-node di bawah jaringan

Pertimbangkan dua node yang memiliki berbagai ruang nama jaringan, antarmuka jaringan, dan jembatan Linux.

Sekarang, asumsikan sebuah paket melakukan perjalanan dari pod1 ke pod4 yang berada di node yang berbeda.

  • Paket meninggalkan jaringan pod 1 dan memasuki jaringan root di veth0
  • Kemudian paket tersebut diteruskan ke jembatan Linux (cbr0) yang bertanggung jawab untuk membuat permintaan ARP untuk menemukan tujuan.
  • Setelah bridge menyadari bahwa pod ini tidak memiliki alamat tujuan, paket tersebut kembali ke antarmuka jaringan utama eth0.
  • Paket sekarang meninggalkan node 1 untuk menemukan tujuannya di node lain dan memasuki tabel rute yang merutekan paket ke node yang blok CIDR-nya berisi pod4.
  • Jadi, sekarang paket mencapai node2 dan kemudian bridge mengambil paket yang membuat permintaan ARP untuk mengetahui bahwa IP milik veth0.
  • Akhirnya, paket melewati pasangan pipa dan mencapai pod4.

Jadi, begitulah pod berkomunikasi satu sama lain. Sekarang, mari kita lanjutkan dan lihat bagaimana layanan membantu dalam komunikasi pod.

Jadi, menurut Anda apa layanannya?

Jasa

Pada dasarnya, layanan adalah jenis sumber daya yang mengonfigurasi proxy untuk meneruskan permintaan ke sekumpulan pod, yang akan menerima lalu lintas & ditentukan oleh pemilih. Setelah layanan dibuat, ia memiliki alamat IP yang ditetapkan yang akan menerima permintaan di port.

Sekarang, ada berbagai jenis layanan yang memberi Anda opsi untuk mengekspos layanan di luar alamat IP cluster Anda.

Jenis Layanan

Terutama ada 4 jenis layanan.

ClusterIP: Ini adalah jenis layanan default yang mengekspos layanan pada IP internal cluster dengan membuat layanan hanya dapat dijangkau dalam cluster.

NodePort: Ini mengekspos layanan di setiap IP Node di port statis. Sejak ClusterIP layanan, yang akan dirutekan oleh layanan NodePort, dibuat secara otomatis. Kami dapat menghubungi layanan NodePort di luar cluster.

LoadBalancer: Ini adalah jenis layanan yang mengekspos layanan secara eksternal menggunakan penyeimbang beban penyedia cloud. Jadi, layanan NodePort dan ClusterIP, yang akan dirutekan oleh penyeimbang beban eksternal, dibuat secara otomatis.

ExternalName : Jenis layanan ini memetakan layanan ke konten file externalName bidang dengan mengembalikan a CNAME merekam dengan nilainya.

Jadi, semuanya tentang layanan. Sekarang, Anda mungkin bertanya-tanya bagaimana layanan eksternal terhubung ke jaringan ini, bukan?

Nah, itu tidak lain Jaringan Ingress .

Jaringan Ingress

Nah, jaringan Ingress adalah cara paling kuat untuk mengekspos layanan karena ini adalah kumpulan aturan yang memungkinkan koneksi masuk, yang dapat dikonfigurasi untuk memberikan layanan secara eksternal melalui URL yang dapat dijangkau. Jadi, ini pada dasarnya bertindak sebagai titik masuk ke cluster Kubernetes yang mengelola akses eksternal ke layanan dalam sebuah cluster.

Sekarang, izinkan saya menjelaskan kepada Anda cara kerja Ingress Network dengan sebuah contoh.

Kami memiliki 2 node, memiliki ruang nama jaringan pod dan root dengan jembatan Linux. Selain itu, kami juga memiliki perangkat ethernet virtual baru yang disebut flannel0 (plugin jaringan) ditambahkan ke jaringan root.

Sekarang, kami ingin paket mengalir dari pod1 ke pod 4.

  • Jadi, paket meninggalkan jaringan pod1 di eth0 dan memasuki jaringan root di veth0.
  • Kemudian diteruskan ke cbr0, yang membuat permintaan ARP untuk menemukan tujuan dan setelah itu menemukan bahwa tidak ada orang di node ini yang memiliki alamat IP tujuan.
  • Jadi, bridge mengirimkan paket ke flannel0 karena tabel rute node dikonfigurasikan dengan flannel0.
  • Sekarang, daemon flanel berbicara ke server API Kubernetes untuk mengetahui semua IP pod dan node masing-masing untuk membuat pemetaan IP pod ke IP node.
  • Plugin jaringan membungkus paket ini dalam paket UDP dengan header tambahan yang mengubah IP sumber dan tujuan ke node masing-masing dan mengirimkan paket ini melalui eth0.
  • Sekarang, karena tabel rute sudah mengetahui cara merutekan lalu lintas antar node, ia mengirimkan paket ke node2 tujuan.
  • Paket tersebut tiba di eth0 dari node2 dan kembali ke flannel0 untuk melakukan de-capsulate dan memancarkannya kembali ke namespace jaringan root.
  • Sekali lagi, paket tersebut diteruskan ke jembatan Linux untuk membuat permintaan ARP untuk mengetahui IP milik veth1.
  • Paket tersebut akhirnya melintasi jaringan root dan mencapai tujuan Pod4.

Jadi, begitulah layanan eksternal dihubungkan dengan bantuan jaringan masuk. Sekarang, ketika saya berbicara tentang plugin Jaringan, izinkan saya memperkenalkan Anda ke daftar plugin jaringan populer yang tersedia.

Sekarang, setelah saya memberi tahu Anda banyak tentang Jaringan Kubernetes, izinkan saya menunjukkan studi kasus kehidupan nyata.

Studi Kasus: Wealth Wizard Menggunakan Kubernetes Networking

Wealth Wizards adalah platform perencanaan keuangan online yang menggabungkan perencanaan keuangan, dan teknologi perangkat lunak cerdas untuk memberikan saran ahli dengan biaya yang terjangkau.

Tantangan

Sekarang, sangat penting bagi perusahaan untuk segera menemukan dan menghilangkan kerentanan kode dengan visibilitas penuh dari lingkungan cloud mereka, tetapi ingin mengontrol lalu lintas melalui pembatasan akses.

Jadi, mereka menggunakan infrastruktur Kubernetes untuk mengelola penyediaan dan peluncuran cluster dengan bantuan alat untuk mengelola penerapan dan konfigurasi layanan mikro di seluruh cluster Kube.

Mereka juga menggunakan fitur kebijakan jaringan Kubernetes untuk memungkinkan mereka mengontrol lalu lintas melalui pembatasan akses.

Sekarang, masalahnya adalah, kebijakan ini berorientasi pada aplikasi dan hanya dapat berkembang dengan aplikasi, tetapi tidak ada komponen untuk menegakkan kebijakan ini.

Jadi, satu-satunya solusi yang dapat ditemukan perusahaan untuk ini adalah menggunakan plugin jaringan, dan karenanya mereka mulai menggunakan Weave Net.

Larutan

Plugin jaringan ini membuat jaringan virtual yang memiliki pengontrol kebijakan jaringan untuk mengelola dan menegakkan aturan di Kubernetes. Tidak hanya itu, tetapi juga menghubungkan kontainer Docker di beberapa host dan memungkinkan penemuan otomatisnya.

Jadi, misalkan Anda memiliki beban kerja di cluster dan Anda ingin menghentikan beban kerja lain di cluster yang berbicara dengannya. Anda dapat melakukannya dengan membuat kebijakan jaringan yang membatasi akses dan hanya mengizinkan masuknya melalui kontroler masuk pada port tertentu.

Sekarang, dengan penerapannya pada setiap node Kubernetes, plugin mengelola perutean antar-pod dan memiliki akses untuk memanipulasi aturan IPtables. Sederhananya, setiap kebijakan diubah menjadi kumpulan aturan IPtables, dikoordinasikan dan dikonfigurasi di setiap mesin untuk menerjemahkan tag Kubernetes.

Baiklah, sekarang Anda telah mempelajari begitu banyak teori tentang Kubernetes Networking, izinkan saya menunjukkan kepada Anda bagaimana hal itu dilakukan secara praktis.

Tangan di atas

Jadi, dengan asumsi bahwa Anda semua telah menginstal Kubernetes di sistem Anda, saya memiliki skenario untuk ditampilkan.

Misalkan Anda ingin menyimpan nama produk dan ID produk, untuk itu Anda memerlukan aplikasi web. Pada dasarnya, Anda memerlukan satu container untuk aplikasi web dan Anda memerlukan satu container lagi sebagai MySQL untuk backend, dan container MySQL tersebut harus ditautkan ke container aplikasi web.

Bagaimana kalau saya menjalankan contoh yang disebutkan di atas secara praktis.

Ayo mulai!

Langkah 1: Buat folder di direktori yang Anda inginkan dan ubah jalur direktori kerja ke folder itu.

mkdir HandsOn cd HandsOn /

Langkah 2: Sekarang buat file YAML penerapan, untuk aplikasi web dan database MySQL.

Step3: Setelah Anda membuat file penerapan, terapkan kedua aplikasi tersebut.

kubectl terapkan -f webapp.yml kubectl terapkan -f mysql.yml

Langkah 3.1: Periksa kedua penerapan.

kubectl dapatkan penerapan

Langkah 4: Sekarang, Anda harus membuat layanan untuk kedua aplikasi tersebut.

kubectl apply -f webservice.yml kubectl apply -f sqlservice.yml

Langkah 4.1: Setelah layanan dibuat, terapkan layanan.

Langkah 4.2: Periksa apakah layanan telah dibuat atau belum.

kubectl mendapatkan layanan

Langkah 5: Sekarang, periksa konfigurasi pod yang sedang berjalan.

kubectl mendapatkan pod

Langkah 6: Masuk ke dalam wadah di dalam webapp pod.

kubectl exec -it container_id bash nano var / www / html / index.php

Langkah 6.1 : Sekarang, ubah $ namaserver dari localhost ke nama layanan SQL yang ' webapp-sql1 'Dalam hal ini, dan $ password dari untuk ' edureka '. Juga, isi semua detail database yang diperlukan dan simpan file index.php Anda dengan menggunakan pintasan keyboard Ctrl + x dan setelah itu pers Y untuk menyimpan dan tekan memasukkan .

Langkah 7: Sekarang, masuk ke wadah MySQL yang ada di dalam pod.

kubectl exec itu container_id bash

Langkah 7.1: Dapatkan akses untuk menggunakan container MySQL.

mysql -u root -p edureka

Di mana -u mewakili pengguna dan -p adalah kata sandi mesin Anda.

Langkah 7.2: Buat database di MySQL yang akan digunakan untuk mengambil data dari webapp.

BUAT ProductDetails DATABASE

Langkah 7.3: Gunakan database yang dibuat.

GUNAKAN Detail Produk

Langkah 7.4: Buat tabel di database ini di MySQL yang akan digunakan untuk mengambil data dari webapp.

BUAT produk TABEL (product_name VARCHAR (10), product_id VARCHAR (11))

Langkah 7.5: Sekarang, keluar dari wadah MySQL juga menggunakan perintah keluar .

Langkah 8: Periksa nomor port tempat aplikasi web Anda berfungsi.

kubectl mendapatkan layanan

Langkah 8.1: Sekarang, buka aplikasi web dengan nomor port yang dialokasikan.

Langkah 9: Setelah Anda mengklik Kirim Kueri , buka node tempat layanan MySQL Anda berjalan, lalu masuk ke dalam container.

Ini akan menunjukkan kepada Anda output dari semua produk daftar, yang telah Anda isi secara detail.

Tertarik Mempelajari Kubernetes?

Jika Anda merasa blog Kubernetes Networking ini relevan, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia.