ProHoster > Блог > Maamulka > Khibradayada xogta ku jirta kooxda Kubernetes si toos ah (la'aanteed K8s API)
Khibradayada xogta ku jirta kooxda Kubernetes si toos ah (la'aanteed K8s API)
Waxaa isa soo taraya, macaamiishu waxa ay na waydiisanayaan in aanu siino gelitaanka kooxda Kubernetes si ay awood ugu yeeshaan helitaanka adeegyada kutlada dhexdeeda: si ay u awoodaan in ay si toos ah ugu xidhmaan xogta ama adeega qaar ka mid ah, si loogu xidho arjiga maxalli ah codsiyada ku jira kutlada...
Tusaale ahaan, waxaa jirta baahi loo qabo in laga xidho mishiinka deegaankaaga iyo adeega memcached.staging.svc.cluster.local. Waxaan bixinaa awoodan anagoo adeegsanayna VPN-ka gudaha kooxda uu macmiilku ku xidho. Si tan loo sameeyo, waxaanu ku dhawaaqnaa subnets of pods, adeegyada iyo riix kooxda DNS macmiilka. Markaa, marka macmiilku isku dayo inuu ku xidho adeegga memcached.staging.svc.cluster.local, codsigu waxa uu aadayaa kutlada DNS jawaab ahaanna waxa uu ciwaanka adeegan ka helayaa shabakada adeega kooxda ama ciwaanka pods
Waxa aanu ku habaynay kooxaha K8s anagoo adeegsanayna kubeadm, halka subnet-ka adeega caadiga ahi yaalo 192.168.0.0/16, iyo shabkada pods waa 10.244.0.0/16. Caadi ahaan wax walba si fiican ayey u shaqeeyaan, laakiin waxaa jira dhowr qodob:
Subnet 192.168.*.* inta badan loo isticmaalo shabakadaha xafiiska macmiilka, iyo xataa marar badan shabakadaha guryaha horumariya. Kadibna waxaan helnaa isku dhacyo: router gurigu waxay ku shaqeeyaan subnet-kan VPN-kuna wuxuu ka riixaa shabakadaha hoose ee kooxda macaamiisha.
Waxaan haynaa dhowr rucubood (wax soo saar, marxalad iyo/ama dhowr kooxood). Dabadeed, sida caadiga ah, dhammaantood waxay yeelan doonaan shabakad-hoosaadyo isku mid ah oo loogu talagalay pods iyo adeegyada, taas oo ku abuurta dhibaato weyn shaqada isku mar ah ee adeegyada dhowr kooxood.
Waxaan mar hore qaadanay dhaqanka ah isticmaalka shabakadaha hoose ee kala duwan ee adeegyada iyo pods hal mashruuc gudahood - guud ahaan, si ay dhammaan kooxuhu waxay leeyihiin shabakado kala duwan. Si kastaba ha ahaatee, waxaa jira kooxo tiro badan oo shaqaynaya oo aanan jeclayn inaan ka rogo xoqan, maadaama ay qabtaan adeegyo badan, codsiyo dawladeed, iwm.
Ka dib waxaan is weydiinnay: sida loo beddelo subnet-ka ee kutlada jira?
Raadinta go'aamada
Dhaqanka ugu caansan waa in dib loo abuuro oo dhan adeegyo leh nooca ClusterIP. Ikhtiyaar ahaan, talo bixin kara iyo kan:
Habka soo socda ayaa dhibaato leh: ka dib wax kasta oo la habeeyey, boodhadhku waxay la imaanayaan IP-gii hore ee magaca DNS ee /etc/resolv.conf.
Maadaama aanan wali helin xalka, waa inaan dib u dajiyaa kutlada oo dhan anigoo wata kubeadm reset oo markale dib u dajiyo.
Laakiin tani kuma habboona qof walba... Halkan waxaa ah hordhacyo faahfaahsan oo ku saabsan kiiskeena:
Flannel waxaa loo isticmaalaa;
Waxaa jira rucubyo labadaba ku jira daruuraha iyo qalabka;
Waxaan jeclaan lahaa in aan iska ilaaliyo in aan dib u hawlgeliyo dhammaan adeegyada kooxda;
Waxaa jirta baahi loo qabo in wax walba lagu sameeyo tirada ugu yar ee dhibaatooyinka;
Nooca Kubernetes waa 1.16.6 (si kastaba ha ahaatee, tillaabooyin dheeraad ah ayaa la mid noqon doona noocyada kale);
Hawsha ugu muhiimsan waa in la hubiyo in kooxdu ay ku jirto kubeadm oo leh shabakad hoosaad adeeg 192.168.0.0/16, ku beddel 172.24.0.0/16.
Oo waxa dhacday in aanu muddo dheer xiisaynnay inaanu aragno waxa iyo sida Kubernetes loogu kaydiyo iwm, maxaa lagu samayn karaa... Markaa waxaanu ku fikirnay: "Waa maxay sababta aan u cusboonaysiin oo keliya xogta ku jirta iwm, oo lagu beddelayo cinwaannadii hore ee IP-ga (subnet) kuwo cusub? »
Ka dib markii aan raadinay qalab diyaarsan oo loogu shaqeynayo xogta iwm, ma aanan helin wax si buuxda u xalliyey dhibaatada. (Jid ahaan, haddii aad ogtahay wax ku saabsan wixii utility ah ee si toos ah xogta loogula shaqaynayo iwm, waan u mahadcelinaynaa isku xirka.) Si kastaba ha ahaatee, bar bilow fiican waa iwm caawiye ka OpenShift(Mahad waxaa leh qorayaashiisa!).
Utility Tani waxay ku xidhi kartaa etcd isticmaalaya shahaadooyinka oo akhri xogta halkaas oo isticmaalaya amarada ls, get, dump.
Ku dar iwm caawiye
Fikirka soo socdaa waa macquul: "Maxaa kaa joojinaya inaad ku darto utility-gan adigoo ku daraya awoodda aad u qori karto xogta iwm?"
Waxa ay noqotay nooc wax laga beddelay oo etcdhhelper ah oo leh laba hawlood oo cusub changeServiceCIDR и changePodCIDR. iyada waxaad arki kartaa koodhka halkan.
Waxaan ku mareynaa dhammaan adeegyada leh nooca ClusterIP ee kutlada:
go'aamin qiimaha laga bilaabo etcd una beddelo shayga Go;
annaga oo adeegsanayna tibaax joogto ah waxaan ku beddeleynaa labada bytes ee ugu horreeya cinwaanka;
u dhiibo adeegga ciwaanka IP-ga ee subnet-ka cusub;
Waxaan abuurnaa serializer, u beddelo shayga Go protobuf, u qor xog cusub iwm.
function changePodCIDR asal ahaan la mid ah changeServiceCIDR - kaliya halkii aad ka tafatirin lahayd qeexida adeegga, waxaan u sameynaa noodhka iyo isbeddelka .spec.PodCIDR subnet cusub.
Tababarka
Beddel adeegga CIA
Qorshaha fulinta hawshu waa mid aad u fudud, laakiin waxa ay ku lug leedahay waqti dhimis iyadoo dhammaan boodhadhka kooxda dib loo abuurayo. Ka dib markaan sharaxno tillaabooyinka ugu muhiimsan, waxaan sidoo kale wadaagi doonaa fikradaha ku saabsan sida, aragti ahaan, wakhtigan hoos u dhaca loo yareyn karo.
Nafteena ayaan wax u badbaadinaa etcdhelper.go, soo deji ku tiirsanaanta, ururi:
wget https://raw.githubusercontent.com/flant/examples/master/2020/04-etcdhelper/etcdhelper.go
go get go.etcd.io/etcd/clientv3 k8s.io/kubectl/pkg/scheme k8s.io/apimachinery/pkg/runtime
go build -o etcdhelper etcdhelper.go
4. Beddel subnet-ka adeegga ee diyaaradda xakamaynta Kubernetes. Faylasha ku jira /etc/kubernetes/manifests/kube-apiserver.yaml и /etc/kubernetes/manifests/kube-controller-manager.yaml beddel cabbirka --service-cluster-ip-range ku soo biir subnet cusub: 172.24.0.0/16 halkii 192.168.0.0/16.
5. Maadaama aanu bedelayno subnet-ka adeega kaas oo kubeadm uu bixiyo shahaadooyinka apiserver (ay ku jirto), waxay u baahan yihiin in dib loo soo saaro:
Aynu aragno xayndaabyada iyo ciwaanka IP-ga ee shahaadada hadda la siiyay:
openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
X509v3 Subject Alternative Name:
DNS:dev-1-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:apiserver, IP Address:192.168.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
Digniin Waqtigan xaadirka ah, xallinta bogga waxa uu joogsadaa ka shaqaynta kutlada, tan iyo gundhigyada jira /etc/resolv.conf Ciwaanka hore ee CoreDNS (kube-dns) wuu diiwaangashan yahay, kube-proxy-kuna wuxuu beddelaa xeerarka iptables-ka hoose ee hore una beddelo kan cusub. Faahfaahin dheeraad ah oo ku saabsan maqaalka waxaa lagu qoray wax ku saabsan fursadaha suurtagalka ah ee lagu yareynayo wakhtiga dhimista.
Aan ku hagaajino ConfigMap's meesha magaca kube-system:
kubectl -n kube-system edit cm kubelet-config-1.16
- halkan ku beddel clusterDNS Ciwaanka IP-ga cusub ee adeega kube-dns: kubectl -n kube-system get svc kube-dns.
Qorshahani wuxuu kuu ogolaanayaa inaad hoos u dhigto ~ hal daqiiqo - inta lagu jiro ka saarista adeegga kube-dns-tmp iyo beddelka subnet-ka adeegga kube-dns.
Shabakadda wax ka beddelka
Isla mar ahaantaana, waxaan go'aansanay inaan eegno sida loo beddelo podNetwork iyada oo la adeegsanayo etcdhhelper natiijada. Taxanaha falku waa sida soo socota:
hagaajinta habaynta gudaha kube-system;
hagaajinta kube-controller-maareeyaha qoraalka;
u beddel podCIDR si toos ah iwm;
dib u bilow dhammaan qanjidhada kooxda
Hadda wax badan oo ku saabsan falalkan:
1. Wax ka beddel ConfigMaps meesha magaca kube-system:
6. Aynu dib u bilowno dhammaan qanjidhada kooxda mid mid.
7. Haddii aad ka tagto ugu yaraan hal nood podCIDR hore, ka dibna kube-controller-maareeyaha ma awoodi doono inuu bilaabo, iyo boodhadhka kutlada lama ballansan doono.
Dhab ahaantii, beddelka podCIDR waa la samayn karaa xitaa ka fudud (tusaale ahaan, sidaas darteed). Laakiin waxaan rabnay inaan barano sida loola shaqeeyo iwm si toos ah, sababtoo ah waxaa jira kiisas marka la hagaajinayo walxaha Kubernetes ee iwm. kaliya kala duwanaansho suurtagal ah. (Tusaale ahaan, kaliya ma bedeli kartid goobta adeega wakhti la'aan spec.clusterIP.)
Natiijada
Maqaalku wuxuu ka hadlayaa suurtagalnimada in si toos ah loogu shaqeeyo xogta iwm, i.e. ka gudubka Kubernetes API. Mararka qaarkood habkani wuxuu kuu ogolaanayaa inaad sameyso "waxyaabo khiyaano leh." Waxaan ku tijaabinay hawlgallada qoraalka ku qoran ee kutlada dhabta ah ee K8s. Si kastaba ha ahaatee, xaaladdooda diyaargarowga isticmaalka baahsan waa PoC (caddayn fikradda). Sidaa darteed, haddii aad rabto in aad isticmaasho nooca wax laga beddelay ee utility etcdhelper ee kutlooyinkaaga, sidaas u yeelo adiga oo halis u ah.