Pod GKE hilang akses VPN selepas 1.14: dua cara membaiki sumber
Selepas 1.14 pod sampai ke VPN dengan alamat sendiri, jadi rakan setara menggugurkan balasan. Pilih kontrak sumber, kemudian tetapkan nonMasqueradeCIDRs supaya sepadan.
Kemas kini tiba, dan sistem di seberang terowong mula menolak trafik pod yang berfungsi minggu sebelumnya. Terowong aktif, peraturan firewall tidak disentuh, dan tiada siapa mengedit dasar rakan setara. Apa yang berubah tidak kelihatan dalam log kluster: alamat sumber yang dilihat sistem itu sekarang. Jurang itu menjelaskan kegagalan yang kelihatan seperti gangguan rangkaian dan berkelakuan seperti masalah kebenaran.
Terdapat dua jawapan sah, dan kedua-duanya membawa anda ke tempat berbeza. Pilih kontrak sumber sebelum mengedit ConfigMap.
Peraturan lalai yang tidak lagi dipasang
Keluaran GKE terdahulu memasang peraturan masquerade yang menggantikan sumber pod dengan alamat nod setiap kali destinasi berada di luar 10.0.0.0/8. Gateway VPN dalam julat itu melihat alamat pod, manakala apa-apa yang lebih jauh kelihatan datang dari nod. Rakan setara membina senarai benaran dan laluan balik di sekitar alamat nod kerana itulah yang mereka perhatikan.
Keluaran kemudian berhenti memasang peraturan lalai itu. Trafik pod kini tiba di gateway dengan alamat pod, apa pun destinasinya. Rakan setara yang hanya menghalakan alamat nod menggugurkan balasan, dan tiada pihak menulis entri log berguna. Permintaan mungkin berjaya di hujung jauh, dan itulah yang menjadikan kegagalan ini mengelirukan untuk dijejaki.
Tiada apa yang rosak dalam erti kata komponen mati. Kedua-dua pihak hanya tidak bersetuju tentang sumber mana yang sah.
Pilih sumber yang sepatutnya dilihat rakan setara
Mengekalkan alamat pod ialah kontrak yang lebih tepat. Pihak jauh melihat beban kerja yang menghasilkan trafik, log kekal jujur, dan dasar setiap pod menjadi mungkin. Harganya ialah rakan setara mesti membawa awalan pod.
Mengekalkan alamat nod ialah kontrak yang lebih murah. Hidupkan semula masquerade untuk destinasi itu dan rakan setara terus melihat alamat yang sudah dipercayainya.
Satu soalan menentukan antara keduanya: apa yang rakan setara lakukan dengan sumber itu? Jika ia mencatat log, menggunakan dasar setiap sumber atau menguatkuasakan penghalaan balik yang sempit, alamat pod mewajarkan konfigurasi tambahan. Jika ia hanya perlu menghantar balasan, masquerade lebih murah dan tidak meminta apa-apa daripada pihak lain. Mana-mana pilihan boleh dipertahankan asalkan kedua-dua pasukan menuliskannya.
Pilihan ketiga biasanya satu kesilapan: masquerade semuanya dan hilang keupayaan mengaitkan trafik. Elakkannya melainkan rakan setara benar-benar tidak dapat menghalakan apa-apa selain alamat nod.
Halakan nonMasqueradeCIDRs ke julat sebenar
GKE menjalankan ip-masq-agent dalam kube-system, dan ConfigMap-nya menyenaraikan destinasi yang melangkau masquerade. Untuk mengekalkan sumber pod ke arah terowong, julat pod, subnet nod dan awalan setempat semuanya tergolong dalam senarai itu.
Gantikan nilai contoh dengan julat daripada kluster anda sendiri. Jangan jadikan senarai lebih lebar daripada keperluan, kerana setiap entri tambahan mengubah apa yang dilihat destinasi lain. Tiga entri di bawah mewakili rangkaian pod, subnet nod dan awalan di sebalik terowong:
nonMasqueradeCIDRs:
- 10.12.0.0/14
- 10.100.0.0/16
- 172.16.0.0/12
masqLinkLocal: false
resyncInterval: 60sEntri 0.0.0.0/0 menyahdayakan masquerade untuk semua destinasi, yang mengubah cara beban kerja tidak berkaitan kelihatan kepada perkhidmatan luar dan jarang disengajakan. Ejen membaca semula konfigurasinya pada resyncInterval, jadi mula semula biasanya tidak perlu. Periksa sama ada pod ejen berjalan, kemudian buka fail yang dipasang di dalamnya. Membaca fail itulah yang membuktikan perubahan telah tiba.
Laluan balasan ialah separuh yang lain
Masquerade mengubah sumber permintaan dan bukan yang lain. Apa pun sumber yang diterima rakan setara, ia masih perlu laluan balik ke situ, dan kluster masih perlu laluan menuju rakan setara.
Tangkapan di gateway VPN memisahkan kedua-dua kegagalan dengan cepat. Paket yang tiba dengan alamat pod dan tidak pernah mendapat balasan bermakna rakan setara tiada laluan untuk awalan pod. Balasan yang muncul di gateway tetapi tidak pernah sampai ke kluster bermakna laluan setempat hilang. Tuliskan kontrak dalam tiket sama ada: sumber mana yang dilihat rakan setara, dan awalan mana yang dihalakan balik.
Semak semula selepas setiap kemas kini
Tingkah laku lalai masquerade sudah berubah sekali, dan penggantian kumpulan nod boleh menetapkan semula rangkaian kluster. Anggap kontrak sumber sebagai sesuatu untuk disahkan, bukan diandaikan.
Selepas kemas kini, hantar satu permintaan daripada pod ke perkhidmatan setempat dan baca sumber yang dicatat rakan setara. Pemerhatian tunggal itu menangkap regresi yang akan dilaporkan halaman status terowong sebagai sihat dengan gembira. Mengulanginya mengambil satu minit dan menjimatkan satu malam orang seterusnya.