Zomwe takumana nazo ndi data mu etcd Kubernetes cluster mwachindunji (popanda K8s API)
Kuchulukirachulukira, makasitomala akutipempha kuti tipereke mwayi ku gulu la Kubernetes kuti titha kupeza ntchito mkati mwa gululi: kuti titha kulumikizana mwachindunji ndi database kapena ntchito ina, kulumikiza pulogalamu yakomweko ndi mapulogalamu omwe ali mkati mwa gulu ...
Mwachitsanzo, pakufunika kulumikiza makina anu am'deralo kupita ku ntchito memcached.staging.svc.cluster.local. Timapereka izi pogwiritsa ntchito VPN mkati mwa gulu lomwe kasitomala amalumikizana. Kuti tichite izi, timalengeza ma subnets a ma pod, ntchito ndikukankhira gulu la DNS kwa kasitomala. Choncho, pamene kasitomala ayesa kulumikiza utumiki memcached.staging.svc.cluster.local, pempho likupita ku cluster DNS ndipo poyankha amalandira adilesi ya msonkhanowu kuchokera ku network network network kapena pod adilesi.
Timakonza magulu a K8s pogwiritsa ntchito kubeadm, pomwe subnet yokhazikika ili 192.168.0.0/16, ndi netiweki ya ma pod ndi 10.244.0.0/16. Nthawi zambiri zonse zimayenda bwino, koma pali mfundo zingapo:
Subnet 192.168.*.* Nthawi zambiri amagwiritsidwa ntchito m'maofesi amakasitomala, komanso nthawi zambiri pamanetiweki apanyumba. Ndiyeno timapeza mikangano: ma routers akunyumba amagwira ntchito pa subnet iyi ndipo VPN imakankhira ma subnets awa kuchokera pagulu kupita kwa kasitomala.
Tili ndi magulu angapo (kupanga, siteji ndi/kapena magulu angapo a dev). Ndiye, mwachisawawa, onse adzakhala ndi ma subnets ofanana a ma pod ndi mautumiki, zomwe zimapangitsa kuti zikhale zovuta kwambiri pakugwira ntchito nthawi imodzi ndi mautumiki m'magulu angapo.
Tidatengera kalekale mchitidwe wogwiritsa ntchito ma subnets osiyanasiyana pazithandizo ndi ma pod mkati mwa projekiti imodzi - pafupipafupi, kuti magulu onse akhale ndi maukonde osiyanasiyana. Komabe, pali magulu ambiri omwe akugwira ntchito omwe sindikufuna kugubuduza kuyambira pachiyambi, chifukwa amayendetsa ntchito zambiri, mapulogalamu apamwamba, ndi zina zotero.
Mchitidwe wofala kwambiri ndi kulenganso onse ntchito ndi mtundu ClusterIP. Monga njira, akhoza kulangiza ndi izi:
Njira yotsatirayi ili ndi vuto: zonse zitakonzedwa, ma pod amabwera ndi IP yakale monga DNS nameserver mu /etc/resolv.conf.
Popeza sindinapeze yankho, ndidayenera kukonzanso gulu lonselo ndikukhazikitsanso kubeadm ndikuyambitsanso.
Koma izi sizoyenera aliyense... Nawa mau oyamba atsatanetsatane ankhani yathu:
Flannel imagwiritsidwa ntchito;
Pali masango onse m'mitambo ndi pa hardware;
Ndikufuna kupewa kuyikanso ntchito zonse mugulu;
Pakufunika kuchita zonse ndi zovuta zochepa;
Mtundu wa Kubernetes ndi 1.16.6 (komabe, masitepe ena adzakhala ofanana ndi matembenuzidwe ena);
Ndipo zidangochitika kuti takhala ndi chidwi chofuna kuwona zomwe komanso momwe Kubernetes zimasungidwira mu etcd, zomwe tingachite nazo ... Kotero tinaganiza kuti: "Bwanji osangosintha zambiri mu etcd, m'malo mwa ma adilesi akale a IP (subnet) ndi atsopano? "
Titafufuza zida zopangidwa kale zogwirira ntchito ndi data mu etcd, sitinapeze chilichonse chomwe chinathetsa vutoli. (Mwa njira, ngati mukudziwa za zida zilizonse zogwiritsira ntchito deta mwachindunji etcd, tingayamikire maulalo.) Komabe, chiyambi chabwino ndi etcdhelper kuchokera ku OpenShift(zikomo kwa olemba ake!).
phatikiza mawu okhazikika kuti alowe m'malo mwa CIDR;
timadutsa mautumiki onse ndi mtundu wa ClusterIP mgululi:
zindikirani mtengo kuchokera etcd kukhala chinthu cha Go;
pogwiritsa ntchito mawu okhazikika timasintha ma byte awiri oyamba a adilesi;
perekani ma adilesi a IP kuchokera pa subnet yatsopano;
pangani serializer, sinthani Go chinthu kukhala protobuf, lembani zatsopano ku etcd.
ntchito changePodCIDR zofanana kwenikweni changeServiceCIDR - kokha m'malo mokonza ndondomeko ya utumiki, timachitira node ndikusintha .spec.PodCIDR ku subnet yatsopano.
Yesetsani
Sinthani utumiki CIDR
Dongosolo lokhazikitsa ntchitoyi ndi losavuta, koma limakhudza nthawi yopumira pomwe ma pod onse omwe ali mgululi amapangidwanso. Pambuyo pofotokoza masitepe akuluakulu, tidzagawananso malingaliro a momwe, mwachidziwitso, nthawi yopumayi ingachepetsedwe.
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. Sinthani subnet ya utumiki mu Kubernetes control ndege ikuwonetsera. Mu mafayilo /etc/kubernetes/manifests/kube-apiserver.yaml ΠΈ /etc/kubernetes/manifests/kube-controller-manager.yaml kusintha parameter --service-cluster-ip-range ku subnet yatsopano: 172.24.0.0/16 mmalo mwa 192.168.0.0/16.
5. Popeza tikusintha kagawo kakang'ono ka ntchito komwe kubeadm amapereka ziphaso za apiserver (kuphatikiza), ziyenera kutulutsidwanso:
Tiyeni tiwone madera ndi ma adilesi a IP omwe satifiketi yapano idaperekedwa:
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
Tiyeni tikonzekere kakhazikitsidwe kakang'ono ka kubeadm: