ProHoster > Блог > Nchịkwa > Ahụmahụ anyị na-arụ ọrụ na data na ụyọkọ Kubernetes wdg (na-enweghị K8s API)
Ahụmahụ anyị na-arụ ọrụ na data na ụyọkọ Kubernetes wdg (na-enweghị K8s API)
Na-arịwanye elu, ndị ahịa na-arịọ anyị ka anyị nye ohere na ụyọkọ Kubernetes ka ị nwee ike ịnweta ọrụ n'ime ụyọkọ ahụ: ka ị nwee ike jikọọ ozugbo na ụfọdụ nchekwa data ma ọ bụ ọrụ, jikọọ ngwa mpaghara na ngwa n'ime ụyọkọ ...
Dịka ọmụmaatụ, enwere mkpa ijikọ site na igwe mpaghara gị gaa na ọrụ memcached.staging.svc.cluster.local. Anyị na-enye ike a site na iji VPN n'ime ụyọkọ nke onye ahịa na-ejikọta ya. Iji mee nke a, anyị na-akpọsa subnets nke pọd, ọrụ na ịkwanye ụyọkọ DNS nye onye ahịa. Ya mere, mgbe onye ahịa nwara ijikọ na ọrụ ahụ memcached.staging.svc.cluster.local, arịrịọ ahụ na-aga na ụyọkọ DNS na nzaghachi na-enweta adreesị nke ọrụ a site na netwọk ọrụ ụyọkọ ma ọ bụ adreesị pod.
Anyị na-ahazi ụyọkọ K8s site na iji kubeadm, ebe subnet ọrụ ndabara dị 192.168.0.0/16, na netwọk nke pọd bụ 10.244.0.0/16. Ọtụtụ mgbe, ihe niile na-arụ ọrụ nke ọma, mana enwere isi ihe abụọ:
Netwọk 192.168.*.* A na-ejikarị ya na netwọk ụlọ ọrụ ndị ahịa, na ọbụna karịa na netwọk ụlọ ndị mmepụta. Ma mgbe ahụ, anyị na-enwe esemokwu: ndị na-anya ụgbọ ala na-arụ ọrụ na subnet a na VPN na-ebugharị subnets ndị a site na ụyọkọ na onye ahịa.
Anyị nwere ọtụtụ ụyọkọ (mmepụta, ogbo na/ma ọ bụ ọtụtụ ụyọkọ dev). Mgbe ahụ, na ndabara, ha niile ga-enwe otu subnets maka pods na ọrụ, nke na-emepụta nnukwu ihe isi ike maka ịrụ ọrụ n'otu oge na ọrụ na ọtụtụ ụyọkọ.
Ogologo oge gara aga, anyị nakweere omume nke iji subnets dị iche iche maka ọrụ na pọd n'ime otu ọrụ ahụ - n'ozuzu, ka ụyọkọ niile nwee netwọk dị iche iche. Otú ọ dị, enwere ọnụ ọgụgụ buru ibu nke ụyọkọ na-arụ ọrụ nke na-agaghị amasị m ịtụgharị site na ọkọ, ebe ọ bụ na ha na-arụ ọtụtụ ọrụ, ngwa ngwa, wdg.
Mgbe ahụ, anyị jụrụ onwe anyị: otú ịgbanwe subnet na dị ụyọkọ?
Ịchọ mkpebi
Ihe na-emekarị bụ ịmegharị ihe niile ọrụ nwere ụdị ClusterIP. Dị ka nhọrọ, nwere ike inye ndụmọdụ na nke a:
Usoro na-esonụ nwere nsogbu: mgbe a haziri ihe niile, pọd na-abịa na ochie IP dị ka DNS nameserver na /etc/resolv.conf.
Ebe ọ bụ na ahụghị m ngwọta ya, ekwesịrị m iji kubeadm reset tọgharịa ụyọkọ ahụ ma tinye ya ọzọ.
Mana nke a adabaghị maka onye ọ bụla… Lee okwu mmeghe zuru oke maka ikpe anyị:
A na-eji flannel eme ihe;
Enwere ụyọkọ ma na igwe ojii ma na ngwaike;
Ọ ga-amasị m izere ibugharị ọrụ niile na ụyọkọ ahụ;
Ọ dị mkpa ka a na-eme ihe niile na obere nsogbu;
Ụdị Kubernetes bụ 1.16.6 (agbanyeghị, usoro ndị ọzọ ga-adị ka nsụgharị ndị ọzọ);
Isi ọrụ bụ ịhụ na n'ụyọkọ etinyere na-eji kubeadm nwere subnet ọrụ 192.168.0.0/16, jiri dochie ya 172.24.0.0/16.
Ma ọ dị nnọọ mere na anyị nwere mmasị ogologo oge ịhụ ihe na otú e si echekwa Kubernetes na wdg, ihe a ga-eme ya ... Ya mere, anyị chere: "Gịnị kpatara na ọ bụghị naanị imelite data na wdgd, jiri ndị ọhụrụ dochie adreesị IP ochie (subnet) ochie? »
N'ịchọta ngwaọrụ ndị a kwadebere maka ịrụ ọrụ na data na wdgd, anyị ahụghị ihe ọ bụla na-edozi nsogbu ahụ kpamkpam. (Site n'ụzọ, ọ bụrụ na ịmara maka akụrụngwa ọ bụla maka iji data rụọ ọrụ ozugbo na wdgd, anyị ga-enwe ekele maka njikọ ndị ahụ.) Agbanyeghị, ebe mmalite dị mma bụ wdgdhelper site na OpenShift(ekele ndị dere ya!).
Ngwa a nwere ike jikọọ na wdgd site na iji asambodo wee gụọ data si ebe ahụ site na iji iwu ls, get, dump.
Tinye wdgdhhelper
Echiche na-esote bụ ihe ezi uche dị na ya: "Gịnị na-egbochi gị ịgbakwunye ike a site n'ịgbakwunye ikike ide data na wdgd?"
Ọ ghọrọ ụdị etcdhhelper gbanwetụrụ nwere ọrụ ọhụrụ abụọ changeServiceCIDR и changePodCIDR. na ya ị nwere ike ịhụ koodu ebe a.
Kedu ihe njirimara ọhụrụ na-eme? Algorithm changeServiceCIDR:
mepụta deserializer;
chịkọta okwu mgbe niile iji dochie CIDR;
anyị na-eji ụdị ClusterIP na-aga na ọrụ niile:
decode uru si etcd n'ime ihe Go;
na-eji okwu mgbe nile anyị na-edochi mbụ bytes abụọ nke adreesị;
kenye ọrụ ahụ adreesị IP site na subnet ọhụrụ;
mepụta serializer, gbanwee ihe Go ka ọ bụrụ protobuf, dee data ọhụrụ na wdgd.
ọrụ changePodCIDR n'ezie yiri changeServiceCIDR - naanị kama dezie nkọwapụta ọrụ, anyị na-eme ya maka ọnụ na mgbanwe .spec.PodCIDR na subnet ọhụrụ.
Mee ihe
Gbanwee ọrụ CIDR
Atụmatụ maka mmejuputa atumatu a dị nnọọ mfe, ma ọ na-agụnye oge nkwụsịtụ n'oge a na-emegharị pods niile na ụyọkọ ahụ. Mgbe anyị kọwachara usoro ndị bụ isi, anyị ga-ekekọrịtakwa echiche maka otu, na tiori, enwere ike ibelata oge ọdịda a.
Usoro nkwado:
ịwụnye ngwanrọ dị mkpa ma na-achịkọta patched etcdhelper;
ndabere etcd na /etc/kubernetes.
Atụmatụ ime ihe dị nkenke maka ịgbanwe serviceCIDR:
na-agbanwe apiserver na njikwa-onye njikwa na-egosipụta;
Anyị na-echekwa maka onwe anyị etcdhelper.go, budata ndabere, nakọta:
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. Gbanwee subnet ọrụ na ụgbọ elu njikwa Kubernetes gosipụtara. Na faịlụ /etc/kubernetes/manifests/kube-apiserver.yaml и /etc/kubernetes/manifests/kube-controller-manager.yaml gbanwee oke --service-cluster-ip-range gaa na subnet ọhụrụ: 172.24.0.0/16 kama nke 192.168.0.0/16.
5. Ebe ọ bụ na anyị na-agbanwe subnet ọrụ nke kubeadm na-enye asambodo maka apiserver (gụnyere), ha kwesịrị ịnyeghachi:
Ka anyị hụ ngalaba na adreesị IP nke enyerela asambodo ugbu a maka:
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
Ịkpachara anya N'oge a, ngalaba mkpebi akwụsị ịrụ ọrụ na ụyọkọ, ebe ọ bụ na pọd ndị dị adị /etc/resolv.conf adreesị CoreDNS ochie (kube-dns) debanyere aha, na kube-proxy na-agbanwe iwu iptables site na subnet ochie gaa na nke ọhụrụ. Ọzọkwa n'isiokwu a, e dere banyere nhọrọ enwere ike ibelata oge nkwụsị.
Ka anyị dozie ConfigMap na oghere aha kube-system:
kubectl -n kube-system edit cm kubelet-config-1.16
- dochie ebe a clusterDNS gaa na adreesị IP ọhụrụ nke ọrụ kube-dns: kubectl -n kube-system get svc kube-dns.
kubectl -n kube-system edit cm kubeadm-config
- anyị ga-edozi ya data.ClusterConfiguration.networking.serviceSubnet na subnet ọhụrụ.
Ebe ọ bụ na adreesị kube-dns agbanweela, ọ dị mkpa imelite kubelet config na ọnụ niile:
6. Ka anyị malitegharịa ọnụ ụyọkọ niile n'otu n'otu.
7. Ọ bụrụ na ị hapụ opekata mpe otu ọnụ ochie podCIDR, mgbe ahụ, kube-controller-manager agaghị enwe ike ịmalite, na pods na ụyọkọ agaghị ahazi.
N'ezie, mgbanwe podCIDR nwere ike ime ọbụna mfe (dịka ọmụmaatụ, ka). Mana anyị chọrọ ịmụta ka esi arụ ọrụ na etcd ozugbo, n'ihi na enwere ikpe mgbe ị na-edezi ihe Kubernetes na wdg - otu enwere ike variant. (Dịka ọmụmaatụ, ị nweghị ike ịgbanwe mpaghara Ọrụ na-enweghị oge nkwụsịtụ spec.clusterIP.)
Nsonaazụ
Isiokwu ahụ na-atụle ohere nke ịrụ ọrụ na data na wdgd ozugbo, i.e. ịgafe Kubernetes API. Mgbe ụfọdụ, usoro a na-enye gị ohere ịme “ihe aghụghọ”. Anyị nwalere arụmọrụ enyere na ederede na ezigbo ụyọkọ K8. Agbanyeghị, ọnọdụ ha dị njikere maka ojiji zuru ebe niile bụ PoC (ihe akaebe nke echiche). Ya mere, ọ bụrụ na ịchọrọ iji ụdị ọrụ wdgdhelper gbanwetụrụ na ụyọkọ gị, mee ya n'ihe egwu nke gị.