‫Sekarang setelah pod Anda aktif, Anda
‫mungkin perlu memaparkannya ke layanan eksternal di beberapa titik.
‫Itu berarti memungkinkan mereka untuk menerima koneksi, dengan cara tertentu,
‫di cluster Anda atau dari luar cluster Anda.
‫Di Kubernetes, kami menggunakan perintah expose kubectl sebagai
‫salah satu cara untuk membuat layanan.
‫Kami telah menyebutkan layanan beberapa kali sebelumnya, tetapi mari pastikan bahwa
‫kami memahami apa itu layanan tersebut. Suatu layanan adalah titik
‫akhir yang konsisten sehingga hal-hal lain di dalam,
‫atau di luar cluster, mungkin dapat
‫mengaksesnya.
‫Saat Anda membuat pod di Kubernetes, mereka
‫tidak secara otomatis mendapatkan nama DNS untuk konektivitas eksternal
‫dengan alamat IP, ketat.
‫Anda ingin melakukannya dengan membuat layanan di
‫atas pod yang ada.
‫Ada berbagai cara selain perintah mengekspos ini
‫untuk membuat layanan.
‫Mari kita fokus pada apa yang umum.
‫Hal yang umum di sini adalah DNS inti itu.
‫Jika Anda ingat, kami menyebutkan itu sebelumnya sebagai salah satu fitur
‫inti dari pesawat kendali Anda.
‫Layanan itu akan menjadi server DNS Anda untuk menyelesaikan nama
‫untuk semua hal ini.
‫Selain itu, untuk memilih
‫IP dan port dan bagaimana melakukannya,
‫bagaimana mendapatkan lalu lintas pada dasarnya untuk layanan
‫Anda adalah pekerjaan salah satu dari empat jenis
‫layanan yang berbeda. Mari kita membahasnya sekarang dan kemudian kita
‫akan membahas beberapa contoh. Mari kita mulai dengan
‫jenis layanan ClusterIP, yang merupakan default.
‫Dalam hal ini, aspek yang paling penting adalah bahwa itu
‫hanya tersedia di cluster.
‫Ini sebenarnya tentang satu set Kubernetes
‫yang sedang berbicara dengan set pod yang lain.
‫Ini membuat stres DNS itu sendiri, benar.
‫Itu akan menjadi alamat DNS di bidang
‫kontrol DNS inti. Ini akan mendapatkan alamat
‫IP di ruang alamat IP virtual di dalam cluster.
‫Itu memungkinkan pod Anda yang lain berjalan
‫di cluster untuk berbicara dengan layanan ini menggunakan
‫port layanan. Jika Anda menjalankan aplikasi
‫Nginx, dan itu berjalan di port 80 ketika Anda membuat layanan,
‫IP layanan itu juga bisa di port 80.
‫Itu membuat semacam konsistensi di sana.
‫Jika Anda memikirkannya, ini sangat mirip dengan cara
‫Anda membuat layanan di Swarm, sekarang layanannya sedikit berbeda
‫di Swarm. Mereka memiliki
‫ide berbeda di sekitar mereka.
‫Tetapi mereka konsisten setidaknya ketika Anda membuat layanan, itu
‫memberi Anda IP internal pada load balancer,
‫jika Anda ingat. Ini dijalankan pada port tempat aplikasi aktif.
‫Dalam hal ini, kami melakukan hal yang sangat mirip,
‫tetapi kami harus membuat yang ini dengan perintah expose atau opsi
‫lain yang akan kita bicarakan nanti.
‫Selanjutnya di sini adalah NodePort, yang
‫agak berbeda. Ini sedikit membingungkan out-of-the-box.
‫ClusterIP adalah default dan selalu berfungsi
‫di dalam cluster.
‫Tidak perlu sesuatu yang istimewa. Itu tidak
‫memerlukan aturan firewall di luar cluster untuk lalu
‫lintas untuk sampai ke sana. Tapi, ClusterIP hanya bagus di cluster.
‫Ingat bahwa. ClusterIP, bagus di cluster.
‫NodePort dirancang untuk sesuatu di
‫luar cluster untuk berbicara dengan layanan
‫Anda melalui alamat IP pada node itu sendiri.
‫Saat Anda membuat NodePort, Anda akan mendapatkan port
‫tinggi pada setiap node yang ditugaskan untuk
‫layanan ini.
‫Setelah Anda mendapatkannya, Anda dapat memperbarui hal-hal lain yang perlu diketahui
‫tentang port ini.
‫Port ini akan menjadi port yang tinggi.
‫Anda tidak akan menggunakan port 80, misalnya, ketika Anda
‫menggunakan tipe ini. Kunci dari keduanya adalah bahwa
‫mereka selalu tersedia di setiap cluster Kubernetes.
‫Baik Anda menggunakan solusi vendor cloud, atau menggulir
‫Kubernet Anda sendiri, atau menggunakan solusi paket seperti
‫Docker Enterprise atau Rancher.
‫Ini adalah yang akan selalu bekerja di luar kotak.
‫Selanjutnya adalah jenis penyeimbang beban.
‫Ini sebagian besar digunakan di cloud.
‫Idenya di sini adalah bahwa Anda mengendalikan penyeimbang
‫beban eksternal melalui baris perintah Kubernetes, yang
‫cukup keren.
‫Pada dasarnya, ini adalah sekelompok otomatisasi.
‫Apa yang Anda lakukan di sini adalah
‫di latar belakang, ketika Anda membuat penyeimbang beban ini,
‫itu akan secara otomatis membuat ClusterIP di
‫NodePort sehingga tersedia. Maka itu akan
‫berbicara dengan sistem eksternal. Mungkin itu penyeimbang beban AWS atau
‫vendor cloud lainnya. Pada dasarnya, ini
‫akan datang dari penyedia infrastruktur Anda, dan mereka akan memungkinkan
‫Kubernetes untuk berbicara dengan mereka melalui beberapa API jarak
‫jauh dan mengkonfigurasinya untuk Anda. Jadi, dalam kasus mungkin
‫penyeimbang beban AWS, ketika Anda membuat ini,
‫tidak hanya itu membuat NodePort dan ClusterIPs di
‫backend, tetapi juga memberitahu penyeimbang beban AWS untuk berbicara
‫dengan NodePort.
‫Intinya, ini hanya otomatisasi, benar.
‫Ini membantu Anda menyelamatkan langkah dari keharusan menjalankan beberapa baris
‫perintah AWS, atau antarmuka web, untuk secara otomatis mengatur
‫penyeimbang beban untuk Anda.
‫Dua takeaways yang saya miliki untuk yang satu ini adalah
‫untuk memikirkannya karena ini hanya untuk lalu lintas yang masuk ke
‫cluster Anda dari sumber eksternal.
‫Ini membutuhkan penyedia infrastruktur yang memberi
‫Kubernet kemampuan untuk berbicara dengannya dari jarak jauh.
‫Yang terakhir dari empat jenis layanan adalah ExternalName.
‫Ini lebih jarang digunakan, dan tidak
‫benar-benar ada hubungannya dengan mengendalikan lalu lintas
‫masuk ke layanan Anda.
‫Ini lebih lanjut tentang hal-hal di cluster Anda yang perlu diajak
‫bicara ke layanan luar.
‫Anda ingin membuat nama DNS
‫di sistem DNS inti sehingga kluster Anda dapat menyelesaikan
‫Nama Eksternal yang mungkin tidak Anda
‫kendalikan secara eksternal. Salah satu alasan Anda mungkin
‫menggunakan ExternalName adalah ketika Anda melakukan
‫migrasi berbagai hal. Pikirkan jika Anda memiliki aplikasi jarak jauh.
‫Aplikasi jarak jauh di luar cluster Kubernetes Anda
‫mungkin sudah memiliki nama DNS, kencang.
‫Jika Anda akan pindah mengatakan sesuatu dari layanan
‫eksternal ke layanan internal, Anda mungkin melihat
‫bagaimana Anda bisa menggunakan ExternalName
‫sebagai pengganti untuk mengontrol DNS di dalam alur
‫kerja Kubernetes Anda. Anda pada dasarnya kemudian
‫dapat memiliki satu baris perintah Kubernetes daripada mengatakan, oh saya
‫perlu mengubah DNS eksternal untuk sesuatu jadi saya
‫harus menjalankan beberapa utilitas lain untuk layanan DNS itu.
‫Atau, mungkin bahkan sesuatu yang bahkan tidak memiliki
‫API di belakangnya. Mungkin seperti DNS perusahaan atau
‫sesuatu seperti itu. Anda bisa menggunakan
‫ini di dalam cluster Anda sehingga layanan di dalam cluster
‫Anda mulai menyelesaikan titik akhir yang berbeda dari yang sebelumnya
‫mereka miliki yang eksternal. Saya menemukan bahwa saya
‫benar-benar hanya menggunakannya ketika saya perlu
‫mengubah cara barang saya keluar dari cluster saya ke beberapa layanan eksternal,
‫tetapi saya tidak memiliki cara untuk mengendalikan DNS dari jarak jauh
‫dari hal-hal lain. Jadi, saya lebih
‫suka melakukannya di dalam Kubernetes dan membuat beberapa ExternalNames untuk barang-barang saya.
‫Kemudian, ketika saya ingin mengubahnya secara dinamis di Kubernetes
‫untuk barang-barang saya di dalam kluster saya, saya dapat melakukannya dengan mudah tanpa
‫harus berbicara dengan hal lain.
‫Baiklah. Kami akan menyelesaikan
‫keempat jenis layanan ini, tetapi ada cara lain agar lalu lintas
‫dapat masuk ke dalam kluster Anda.
‫Itu melalui Ingress.
‫Kami akan membicarakannya nanti.
‫Itu dirancang khusus untuk lalu lintas HTTP.
‫Ketika kita sampai di kuliah itu, Anda akan mengerti mengapa itu
‫sedikit berbeda dari jenis layanan ini.