Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Amalan terbaik Kubernetes. Membuat bekas kecil

Apabila anda mula mencipta lebih banyak perkhidmatan Kubernetes, tugasan yang pada mulanya mudah mula menjadi lebih kompleks. Contohnya, pasukan pembangunan tidak boleh membuat perkhidmatan atau penempatan di bawah nama yang sama. Jika anda mempunyai beribu-ribu pod, hanya menyenaraikannya akan mengambil banyak masa, apatah lagi mengurusnya dengan betul. Dan ini hanyalah puncak gunung ais.

Mari lihat bagaimana ruang nama memudahkan untuk mengurus sumber Kubernetes. Jadi apakah ruang nama? Ruang nama boleh dianggap sebagai gugusan maya dalam gugusan Kubernetes anda. Anda boleh mempunyai berbilang ruang nama yang diasingkan antara satu sama lain dalam satu kelompok Kubernetes. Mereka benar-benar boleh membantu anda dan pasukan anda dengan organisasi, keselamatan, dan juga prestasi sistem.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Pada kebanyakan pengedaran Kubernetes, kluster keluar dari kotak dengan ruang nama yang dipanggil "lalai". Sebenarnya terdapat tiga ruang nama yang Kubernetes berurusan: lalai, kube-system dan kube-public. Pada masa ini, Kube-public tidak digunakan dengan kerap.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Membiarkan ruang nama kube sahaja adalah idea yang baik, terutamanya pada sistem terurus seperti Google Kubernetes Engine. Ia menggunakan ruang nama "lalai" sebagai tempat perkhidmatan dan aplikasi anda dicipta. Tiada apa-apa yang istimewa mengenainya, kecuali Kubernetes dikonfigurasikan di luar kotak untuk menggunakannya dan anda tidak boleh mengalih keluarnya. Ini bagus untuk memulakan dan sistem prestasi rendah, tetapi saya tidak akan mengesyorkan menggunakan ruang nama lalai pada sistem prod yang besar. Dalam kes kedua, satu pasukan pembangunan boleh dengan mudah menulis semula kod orang lain dan memecahkan kerja pasukan lain tanpa menyedarinya.

Oleh itu, anda harus mencipta berbilang ruang nama dan menggunakannya untuk membahagikan perkhidmatan anda kepada unit yang boleh diurus. Ruang nama boleh dibuat dengan satu arahan. Jika anda ingin mencipta ruang nama bernama ujian, kemudian gunakan perintah $ kubectl create namespace test atau hanya buat fail YAML dan gunakannya seperti mana-mana sumber Kubernetes yang lain.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Anda boleh melihat semua ruang nama menggunakan perintah $ kubectl get namespace.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Setelah selesai, anda akan melihat tiga ruang nama terbina dalam dan ruang nama baharu yang dipanggil "ujian". Mari lihat fail YAML mudah untuk membuat pod. Anda akan perasan bahawa tiada sebutan ruang nama.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Jika anda menggunakan kubectl untuk menjalankan fail ini, ia akan mencipta modul mypod dalam ruang nama yang sedang aktif. Ini akan menjadi ruang nama lalai sehingga anda menukarnya. Terdapat 2 cara untuk memberitahu Kubernetes ruang nama yang anda ingin ciptakan sumber anda. Cara pertama ialah menggunakan bendera ruang nama apabila mencipta sumber.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Cara kedua ialah dengan menentukan ruang nama dalam perisytiharan YAML.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Jika anda menentukan ruang nama dalam YAML, sumber akan sentiasa dibuat dalam ruang nama itu. Jika anda cuba menggunakan ruang nama yang berbeza semasa menggunakan bendera ruang nama, arahan itu akan gagal. Sekarang jika anda cuba mencari pod anda, anda tidak akan dapat melakukannya.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Ini berlaku kerana semua arahan dilaksanakan di luar ruang nama yang sedang aktif. Untuk mencari pod anda, anda perlu menggunakan bendera ruang nama, tetapi ini menjadi membosankan dengan cepat, terutamanya jika anda seorang pembangun dalam pasukan yang menggunakan ruang nama sendiri dan tidak mahu menggunakan bendera itu untuk setiap arahan. Mari lihat bagaimana kita boleh membetulkannya.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Di luar kotak, ruang nama aktif anda dipanggil lalai. Jika anda tidak menentukan ruang nama dalam sumber YAML, maka semua arahan Kubernetes akan menggunakan ruang nama lalai aktif ini. Malangnya, cuba menguruskan ruang nama aktif menggunakan kubectl boleh gagal. Walau bagaimanapun, terdapat alat yang sangat baik dipanggil Kubens yang menjadikan proses ini lebih mudah. Apabila anda menjalankan perintah kubens, anda melihat semua ruang nama dengan ruang nama aktif diserlahkan.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Untuk menukar ruang nama aktif kepada ruang nama ujian, anda hanya menjalankan perintah ujian $kubens. Jika anda kemudian menjalankan perintah $kubens sekali lagi, anda akan melihat bahawa ruang nama aktif baharu kini diperuntukkan - ujian.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Ini bermakna anda tidak memerlukan bendera ruang nama untuk melihat pod dalam ruang nama ujian.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Dengan cara ini ruang nama disembunyikan antara satu sama lain, tetapi tidak diasingkan antara satu sama lain. Perkhidmatan dalam satu ruang nama boleh berkomunikasi dengan agak mudah dengan perkhidmatan dalam ruang nama lain, yang selalunya sangat berguna. Keupayaan untuk berkomunikasi merentasi ruang nama yang berbeza bermakna perkhidmatan pembangun anda boleh berkomunikasi dengan perkhidmatan pasukan pembangun lain dalam ruang nama yang berbeza.

Biasanya, apabila aplikasi anda ingin mengakses perkhidmatan Kubernetes, anda menggunakan perkhidmatan penemuan DNS terbina dalam dan hanya memberikan nama perkhidmatan kepada aplikasi anda. Walau bagaimanapun, dengan berbuat demikian, anda boleh mencipta perkhidmatan di bawah nama yang sama dalam berbilang ruang nama, yang tidak boleh diterima.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Nasib baik, ini mudah dilalui dengan menggunakan bentuk alamat DNS yang diperluaskan. Perkhidmatan dalam Kubernetes mendedahkan titik akhir mereka menggunakan templat DNS biasa. Ia kelihatan seperti ini:

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Biasanya, anda hanya memerlukan nama perkhidmatan dan DNS akan menentukan alamat penuh secara automatik.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Walau bagaimanapun, jika anda perlu mengakses perkhidmatan dalam ruang nama yang berbeza, hanya gunakan nama perkhidmatan serta nama ruang nama:

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Contohnya, jika anda ingin menyambung ke pangkalan data perkhidmatan dalam ruang nama ujian, anda boleh menggunakan pangkalan data pangkalan data alamat. ujian

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Jika anda ingin menyambung ke pangkalan data perkhidmatan dalam ruang nama prod, anda menggunakan database.prod.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Jika anda benar-benar ingin mengasingkan dan menyekat akses ruang nama, Kubernetes membenarkan anda melakukan ini menggunakan Dasar Rangkaian Kubernetes. Saya akan bercakap tentang ini dalam episod seterusnya.

Saya sering ditanya soalan, berapa banyak ruang nama yang perlu saya buat dan untuk tujuan apa? Apakah sekeping data terurus?

Jika anda mencipta terlalu banyak ruang nama, ia hanya akan menghalang anda. Sekiranya terdapat terlalu sedikit daripada mereka, anda akan kehilangan semua faedah penyelesaian sedemikian. Saya rasa terdapat empat peringkat utama yang dilalui oleh setiap syarikat semasa mencipta struktur organisasinya. Bergantung pada peringkat pembangunan projek atau syarikat anda, anda mungkin mahu menggunakan strategi ruang nama yang sesuai.

Bayangkan anda adalah sebahagian daripada pasukan kecil yang sedang berusaha membangunkan 5-10 perkhidmatan mikro dan anda boleh mengumpulkan semua pembangun dalam satu bilik dengan mudah. Dalam keadaan ini, masuk akal untuk menjalankan semua perkhidmatan prod dalam ruang nama lalai. Sudah tentu, untuk lebih fleksibiliti, anda boleh menggunakan 2 ruang nama - secara berasingan untuk prod dan dev. Dan kemungkinan besar, anda menguji pembangunan anda pada komputer tempatan anda menggunakan sesuatu seperti Minikube.

Katakan perkara berubah dan anda kini mempunyai pasukan yang berkembang pesat yang bekerja pada lebih daripada 10 perkhidmatan mikro pada satu masa. Akan tiba masanya apabila perlu menggunakan beberapa kluster atau ruang nama, secara berasingan untuk prod dan dev. Anda boleh memecahkan pasukan kepada beberapa sub-pasukan supaya setiap daripada mereka mempunyai perkhidmatan mikro sendiri dan setiap pasukan ini boleh memilih ruang nama sendiri untuk memudahkan proses mengurus pembangunan dan keluaran perisian.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Apabila setiap ahli pasukan mendapat cerapan tentang cara keseluruhan sistem berfungsi, semakin sukar untuk menyelaraskan setiap perubahan dengan semua pembangun lain. Mencuba untuk memusingkan susunan penuh pada mesin tempatan anda semakin sukar setiap hari.

Dalam syarikat besar, pembangun secara amnya tidak tahu siapa sebenarnya yang mengusahakan apa. Pasukan berkomunikasi menggunakan kontrak perkhidmatan atau menggunakan teknologi jaringan perkhidmatan, yang menambahkan lapisan abstraksi ke atas rangkaian, seperti alat konfigurasi Istio. Cuba untuk menjalankan keseluruhan timbunan secara tempatan adalah mustahil. Saya amat mengesyorkan menggunakan platform penghantaran berterusan (CD) seperti Spinnaker di Kubernetes. Jadi, ada satu titik di mana setiap arahan pasti memerlukan ruang nama sendiri. Setiap pasukan juga boleh memilih berbilang ruang nama untuk persekitaran dev dan persekitaran prod.

Akhirnya, terdapat syarikat keusahawanan besar di mana satu kumpulan pemaju tidak tahu pun tentang kewujudan kumpulan lain. Syarikat sedemikian secara amnya boleh mengupah pembangun pihak ketiga yang berinteraksi dengannya melalui API yang didokumentasikan dengan baik. Setiap kumpulan tersebut mengandungi beberapa pasukan dan beberapa perkhidmatan mikro. Dalam kes ini, anda perlu menggunakan semua alat yang saya bincangkan sebelum ini.

Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama

Pengaturcara tidak seharusnya menggunakan perkhidmatan secara manual dan tidak sepatutnya mempunyai akses kepada ruang nama yang tidak berkaitan dengan mereka. Pada peringkat ini, adalah dinasihatkan untuk mempunyai beberapa kluster untuk mengurangkan "jejari letupan" aplikasi yang tidak dikonfigurasikan dengan baik, untuk memudahkan proses pengebilan dan pengurusan sumber.

Oleh itu, penggunaan ruang nama yang betul oleh organisasi anda membolehkan anda menjadikan Kubernetes lebih mudah diurus, dikawal, selamat dan fleksibel.

Amalan terbaik Kubernetes. Mengesahkan Kubernetes Liveness dengan Ujian Kesediaan dan Keaktifan

Beberapa iklan πŸ™‚

Terima kasih kerana tinggal bersama kami. Adakah anda suka artikel kami? Ingin melihat kandungan yang lebih menarik? Sokong kami dengan membuat pesanan atau mengesyorkan kepada rakan, cloud VPS untuk pembangun dari $4.99, analog unik pelayan peringkat permulaan, yang kami cipta untuk anda: Keseluruhan kebenaran tentang VPS (KVM) E5-2697 v3 (6 Teras) 10GB DDR4 480GB SSD 1Gbps daripada $19 atau bagaimana untuk berkongsi pelayan? (tersedia dengan RAID1 dan RAID10, sehingga 24 teras dan sehingga 40GB DDR4).

Dell R730xd 2 kali lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya disini 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV daripada $199 di Belanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - daripada $99! Baca tentang Bagaimana untuk membina infrastruktur corp. kelas dengan penggunaan pelayan Dell R730xd E5-2650 v4 bernilai 9000 euro untuk satu sen?

Sumber: www.habr.com

Tambah komen