ქსელი და Gateway API
კლასტერის ქსელი პრაქტიკაში: Cilium და Calico, Gateway API და Envoy, ბალანსერები, ARP, DHCP და მარშრუტები, რომლებიც ქრება.
9 სტატია
- Calico Ready-ში იყო შეცდომების გარეშე, ყოველი ახალი პოდი კი ნახევარი წუთი მიუწვდომელი იყოCalico-ს განახლების შემდეგ ახალი პოდები 15–42 წამი შავ ხვრელში იყვნენ. Felix XDP resync-ის ციკლში იყო ჩარჩენილი, რომელიც მხოლოდ ნოდებს შორის ახალი პოდების ტესტმა აჩვენა.
- ერთი წუთი მუშაობდა, მერე ტაიმაუტები: MetalLB L2 და kube-proxy ipvs strictARP-ის გარეშეჰოსტების ახალ LoadBalancer IP-ზე გადაყვანა ცოტა ხანს მუშაობდა, მერე გარე ბალანსერმა L4 ტაიმაუტები დაინახა. ერთსა და იმავე IP-ზე ARP-ს ყველა ნოდი პასუხობდა.
- Kubernetes 1.33 → 1.36 და Calico → Cilium ერთ დღეშირეპეტიცია სახლის ლაბორატორიაში: Kubernetes-ის სამი ნაბიჯი, CNI-ის შეცვლა Cilium-ით kube-proxy-ის გარეშე და ingress-nginx-ის ნაცვლად Gateway API — რატომ აჯობა კონტროლირებადმა big-bang-მა ცოცხალ მიგრაციას და რა ხაფანგები უნდა იცოდეთ.
- საბრძოლო სერტიფიკატს ვადა გაუვიდა და არავინ შეამჩნია: გარე პროქსიმ ავარია საკუთარი თავით დაფარაყველა საჯარო ჰოსტი 200-ს აბრუნებდა, კლასტერი კი ვადაგასულ wildcard-ს აძლევდა. საკუთარი TLS-ის მქონე პროქსიმ ავარია დამალა; ნამდვილი მიგნება ვადის ალერტის არარსებობა იყო.
- Liveness პრობა, მიბმული სხვის ქსელზე: 330 რესტარტი, რომლებმაც არაფერი შეაკეთესcloudflared-ის ორი იდენტური რეპლიკა — 330 და 13 რესტარტი. Liveness ამოწმებდა გვირაბს edge-მდე, ამიტომ აპლინკის ყოველი შეფერხება SIGKILL-ად იქცეოდა.
- Basic auth გაქრა 80-ე პორტზე Ingress-იდან Gateway API-ზე გადასვლის შემდეგყველა სტატუსი მწვანე იყო, ჩემი curl 401-ს აბრუნებდა. WordPress-ის შესვლა კი ყველასთვის ღია იყო: Gateway API პოლიტიკას ერთ listener-ს აბამს, Ingress-ის ანოტაციები კი ყველა პორტს ფარავდა.
- ingress-nginx-დან Envoy Gateway-ზე დაუნთაიმის გარეშე: 27 Ingress, 39 HTTPRouteingress-nginx გადამდგარია და Kubernetes-ის განახლებებს ბლოკავს. როგორ გადავიყვანეთ 16 საჯარო ჰოსტი Envoy Gateway-ზე: ახალი შესასვლელი ძველის გვერდით ავამუშავეთ და ბოლოს მხოლოდ მისამართი შევცვალეთ.
- MetalLB-ის შეცვლა Cilium LB IPAM-ით ისე, რომ არც ერთი მოთხოვნა არ დაკარგულაკლასტერში მხოლოდ ერთი LoadBalancer IP იყო და ყველა მარშრუტი მასზე იყო დამოკიდებული. როგორ გადავეცი ის MetalLB-დან Cilium-ს შეცდომების გარეშე — ორივე კონტროლერს ერთდროულად ვამუშავებდი.
- ერთმა დავიწყებულმა DHCP ოფციამ მთელი Kubernetes კლასტერი გათიშაჰოსტის გადატვირთვის შემდეგ ორმოცდაათამდე პოდი CrashLoop-ში წავიდა, თუმცა ყველა ნოდა Ready იყო. მიზეზი დავიწყებული DHCP classless routes ოფცია იყო, რომელმაც ნაგულისხმევი შლუზი ჩუმად წაშალა.