Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Amalan terbaik Kubernetes. Membuat bekas kecil
Amalan terbaik Kubernetes. Organisasi Kubernetes dengan ruang nama
Amalan terbaik Kubernetes. Mengesahkan Kubernetes Liveness dengan Ujian Kesediaan dan Keaktifan
Amalan terbaik Kubernetes. Menyediakan permintaan dan had sumber
Amalan terbaik Kubernetes. Penutupan yang betul Tamatkan

Jika anda seperti kebanyakan orang, anda mungkin menggunakan sumber yang dijalankan di luar kluster anda. Mungkin anda menggunakan API Taleo untuk menghantar mesej teks atau menganalisis imej menggunakan API Google Cloud Vision.

Jika anda menggunakan titik akhir permintaan sisi pelayan yang sama dalam semua persekitaran anda dan tidak bercadang untuk memindahkan pelayan anda ke Kubernetes, maka tidak mengapa untuk mempunyai titik akhir perkhidmatan dalam kod anda. Walau bagaimanapun, terdapat banyak senario lain untuk perkembangan acara. Dalam siri Amalan Terbaik Kubernetes ini, anda akan belajar cara menggunakan mekanisme terbina dalam Kubernetes untuk menemui perkhidmatan di dalam dan di luar kluster.

Contoh perkhidmatan luaran biasa ialah pangkalan data yang dijalankan di luar gugusan Kubernetes. Tidak seperti pangkalan data awan seperti Google Cloud Data Store atau Google Cloud Spanner, yang menggunakan satu titik akhir untuk semua akses, kebanyakan pangkalan data mempunyai titik akhir yang berasingan untuk keadaan yang berbeza.
Amalan terbaik untuk menggunakan pangkalan data tradisional seperti MySQL dan MongoDB biasanya bermakna anda menyambung ke komponen yang berbeza untuk persekitaran yang berbeza. Anda boleh mempunyai mesin yang besar untuk data pengeluaran dan mesin yang lebih kecil untuk persekitaran ujian. Setiap daripada mereka akan mempunyai alamat IP atau nama domain sendiri, tetapi anda mungkin tidak mahu menukar kod anda apabila berpindah dari satu persekitaran ke persekitaran yang lain. Oleh itu, bukannya pengekodan keras alamat ini, anda boleh menggunakan penemuan perkhidmatan luaran berasaskan DNS terbina dalam Kubernetes dengan cara yang sama seperti perkhidmatan Kubernetes asli.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Katakan anda menjalankan pangkalan data MongoDB pada Google Compute Engine. Anda akan terperangkap dalam dunia hibrid ini sehingga anda berjaya memindahkannya ke kluster.

Nasib baik, anda boleh menggunakan perkhidmatan Kubernetes statik untuk menjadikan hidup anda lebih mudah. Dalam contoh ini, saya mencipta pelayan MongoDB menggunakan Google Cloud Launcher. Memandangkan ia dicipta pada rangkaian yang sama (atau VPC kelompok Kubernetes), ia diakses menggunakan alamat IP dalaman berprestasi tinggi.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Ini ialah tetapan lalai pada Google Cloud, jadi anda tidak perlu mengkonfigurasi apa-apa. Sekarang anda mempunyai alamat IP, langkah pertama ialah mencipta perkhidmatan. Anda mungkin perasan bahawa tiada pemilih pod untuk perkhidmatan ini. Iaitu, kami mencipta perkhidmatan yang tidak akan tahu ke mana hendak menghantar trafik. Ini akan membolehkan anda membuat objek titik akhir secara manual yang akan menerima trafik daripada perkhidmatan ini.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Contoh kod berikut menunjukkan bahawa titik akhir menentukan alamat IP untuk pangkalan data menggunakan nama mongo yang sama dengan perkhidmatan.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Kubernetes akan menggunakan semua alamat IP untuk mencari titik akhir seolah-olah ia adalah Pod Kubernetes biasa, jadi kini anda boleh mengakses pangkalan data dengan rentetan sambungan ringkas kepada nama di atas mongodb://mongo. Tidak perlu menggunakan alamat IP dalam kod anda sama sekali.

Jika alamat IP berubah pada masa hadapan, anda hanya boleh mengemas kini titik akhir anda dengan alamat IP baharu dan aplikasi anda tidak perlu diubah suai dalam sebarang cara tambahan.

Jika anda menggunakan pangkalan data yang dihoskan pada hos pihak ketiga, kemungkinan besar pemilik hos telah memberikan anda URI Pengecam Sumber Seragam untuk disambungkan. Jadi jika anda telah diberikan alamat IP, anda boleh menggunakan kaedah sebelumnya. Contoh ini menunjukkan bahawa saya mempunyai dua pangkalan data MongoDB yang dihoskan pada hos mLab.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Satu ialah pangkalan data pembangun dan satu lagi pangkalan data pengeluaran. Rentetan sambungan untuk pangkalan data ini kelihatan seperti ini - mLab menyediakan anda URI dinamik dan port dinamik. Seperti yang anda lihat, mereka berbeza.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Untuk mengabstrak perkara ini, mari gunakan Kubernetes dan sambung ke pangkalan data pembangun. Anda boleh mencipta nama perkhidmatan Kubernetes luaran, yang akan memberi anda perkhidmatan statik yang akan memajukan trafik ke perkhidmatan luaran.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Perkhidmatan ini akan melaksanakan pemajuan CNAME yang mudah pada peringkat kernel dengan kesan prestasi yang minimum. Terima kasih kepada ini, anda boleh menggunakan rentetan sambungan yang lebih mudah.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Tetapi kerana nama luaran menggunakan pemajuan CNAME, ia tidak boleh melakukan pemajuan port. Oleh itu, penyelesaian ini hanya terpakai untuk port statik dan tidak boleh digunakan dengan port dinamik. Tetapi mLab Free Tier memberikan pengguna nombor port dinamik secara lalai dan anda tidak boleh mengubahnya. Ini bermakna anda memerlukan baris arahan sambungan yang berbeza untuk dev dan prod. Perkara yang buruk ialah ini memerlukan anda mengeraskan nombor port. Jadi bagaimana anda mendapatkan pemajuan port untuk berfungsi?

Langkah pertama ialah mendapatkan alamat IP daripada URI. Jika anda menjalankan nslookup, nama hos atau ping URI, anda boleh mendapatkan alamat IP pangkalan data. Jika perkhidmatan mengembalikan beberapa alamat IP kepada anda, maka semua alamat ini boleh digunakan pada titik akhir objek.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Satu perkara yang perlu diingat ialah IP URI boleh berubah tanpa notis, menjadikannya agak berisiko untuk digunakan dalam prod. Menggunakan alamat IP ini, anda boleh menyambung ke pangkalan data jauh tanpa menentukan port. Oleh itu, perkhidmatan Kubernetes melakukan penghantaran port dengan agak telus.

Amalan terbaik Kubernetes. Pemetaan perkhidmatan luar

Pemetaan, atau pemetaan sumber luaran kepada sumber dalaman, memberikan anda fleksibiliti untuk menggunakan perkhidmatan ini dalam kelompok pada masa hadapan sambil meminimumkan usaha pemfaktoran semula. Ia juga memudahkan untuk mengurus dan memberikan cerapan tentang perkhidmatan luaran yang digunakan oleh syarikat anda.

Akan diteruskan tidak lama lagi...

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