default-address-pools parametrini dəyişmək artıq sahib olduğunuz şəbəkələri yenidən nömrələmir və bunu gözləmək diqqətli bir planın necə gözlənilməz fasiləyə çevrildiyini göstərir. Parametr demonun yeni konfiqurasiya ilə yenidən başladılmasından sonra yaradılan şəbəkələr üçün avtomatik ayrılmanı idarə edir. Artıq işləyən hər şey ona verilmiş alt şəbəkəni saxlayır, çünki həmin alt şəbəkə şəbəkənin saxlanılan tərifinin bir hissəsidir. Mif rahatdır, çünki bir düzəlişin hər toqquşmanı həll etdiyini təklif edir, reallıq isə iki hissəli bir işdir: həqiqətən boş olan aralığı seçin, sonra boş olmayan şəbəkələri miqrasiya edin.

Mif: bir hovuz dəyişikliyi toqquşmanı həll edir

Mifin konkret bir forması var. Kimsə Docker-in standart hovuzunun dəyişdirilə biləcəyini oxuyur, onu dəyişir, demonu yenidən başladır və konteyner şəbəkəsinin artıq ofis VPN-i ilə toqquşmadığı qənaətinə gəlir. Köhnə şəbəkə hələ də oradadır, hələ də qoşuludur, hələ də toqquşan ünvanı saxlayır.

Dəyişən şey ayırıcının gələcək davranışıdır ki, bu həqiqətən faydalı və həqiqətən məhduddur. Açıq --subnet olmadan yaradılan yeni şəbəkələr yeni hovuzdan kəsilir; mövcud olanlar isə əvvəldən o hovuzda deyildi. Yenidən başlatma şəbəkələri yenidən qurmur və konteynerləri aralarında köçürmür. Dəyişiklikdən sonra simptom davam edirsə, dəyişiklik real idi və diaqnoz natamam idi.

Baza aralığı və ayrılmış prefiks

Konfiqurasiyada qarışdırmaq asan olan iki sahə var. base ayırıcının kəsdiyi aralıqdır, size isə hər ayrılmış şəbəkənin prefiks uzunluğudur, yəni 10.10.0.0/16 bazası 24 ölçüsü ilə həmin /16 daxilində /24 paylayır. Rolları tərsinə çevirmək nəzərdə tutmadığınız bir ayrılma nümunəsi yaradır, adətən bir nəhəng şəbəkə və ya tükənmiş hovuz.

Hovuz bir qorunma, sübut deyil. Docker hostun marşrutlaşdırma cədvəlində gördüyü toqquşmalardan qaçır və hələ qoşulmadığınız VPN-i görə bilmir.

Bu məhdudiyyət qəsdən seçməyin bütün səbəbidir. Müqayisə ediləcək aralıqlar hostun çatmalı olduğu aralıqlardır: ofis LAN-ı, korporativ VPN-in daxili alt şəbəkələri, laboratoriya və ya staging prefiksləri və eyni overlay üzərindəki hər hansı digər konteyner hostu. Demonu toxunmadan əvvəl onları CIDR kimi yazın, çünki başınızdakı siyahı vacib olanı qaçıracaq. Sonra heç biri ilə toqquşmayan bir baza seçin və siyahını yerləşdirmə ilə birlikdə saxlayın ki, növbəti şəxs tapşırığı yaddaşdan təkrarlamasın.

Seçməzdən əvvəl inventar

Əvvəlcə mövcud olanı inventarlaşdırın. docker network ls şəbəkələri sadalayır, docker network inspect bridge -f '{{.IPAM.Config}}' isə müəyyən bir şəbəkənin istifadə etdiyi alt şəbəkəni çap edir. Bunu istifadəçi tərəfindən təyin edilmiş hər şəbəkə üçün təkrarlayın, çünki Compose layihələri öz şəbəkələrini yaradır və compose faylındakı açıq --subnet hovuzu tamamilə yan keçir.

Sonuncu məqam miqrasiyadan sağ çıxan məqamdır. Hovuz dəyişikliyi həmkarınızın compose faylında 172.18.0.0/16 sabitləməsinin qarşısını almır və toqquşma başqa bir müəlliflə qayıdır.

Artıq mövcud olanı miqrasiya etmək

Mövcud şəbəkələri miqrasiya etmək ayrı, dəstəklənən bir əməliyyatdır. Hər təsirlənmiş şəbəkə yeni alt şəbəkə ilə yenidən yaradılmalıdır, bu da ondan istifadə edən konteynerləri ayırmaq və yenidən qoşmaq deməkdir, şəbəkəni yenidən yaratmaq isə konteyner qoşmalarını köçürmək əvəzinə silir. Həcmləri və konfiqurasiyanı qoruyun və yenidən yaratmanı məlumat sıfırlaması deyil, yerləşdirmə kimi qəbul edin. İşi texniki xidmət pəncərəsində görün, çünki yenidən yaradılmış şəbəkədəki konteynerlər planlaşdırsanız da, planlaşdırmasanız da yenidən başlayır.

Sənədləşdirilmiş demon konfiqurasiyasına və yenidən başlatma proseduruna əməl edin və fasiləni əlaqələndirin. Tək demonlu hostda systemctl restart docker konteynerləri yenidən başlatma siyasətlərinə uyğun yenidən başladır ki, bu da sonra deyil, əvvəl bilinməyə dəyər bir davranışdır.

Sonra dəyişikliyin düzəltməli olduğu iki şeyi yoxlayın. Yeni alt şəbəkəni docker network inspect ilə yoxlayın və onun seçilmiş baza daxilində olduğunu təsdiqləyin, sonra nümayəndəvi VPN təyinatına marşrutu ip route get 10.20.30.40 ilə yoxlayın və gözlədiyiniz yerə getdiyini, körpüyə getmədiyini təsdiqləyin. Xidmət kəşfini və konteynerdən konteynerə ünsiyyəti də sınayın, çünki fərqli ünvanlama ilə yenidən yaradılmış şəbəkə ad həllini tətbiq xətası kimi görünən şəkildə poza bilər.

Sonradan hələ nə pozulur

Davamlı hissə qeyddir. Ayrılma siyahısını, seçilmiş baza və ölçünü və yenidən yaradılmış şəbəkələri yerləşdirmə ilə eyni yerdə saxlayın.

Bir aralığın özəl olması onu təkrar istifadə üçün təhlükəsiz etmir. 10.0.0.0/8 özəldir və eyni zamanda yolun hansısa yerində artıq istifadədə olma ehtimalı ən yüksək olan şeydir, buna görə cavab bir bloka üstünlük deyil, konkret bir qorunmadır. Docker şəbəkə sənədləri avtomatik alt şəbəkə ayrılmasını və hovuz sahələrini təsvir edir. Aralığı səliqəli görünəndən deyil, çatmalı olduğunuzdan seçin.

Əlaqəli məqalələr