Жүктеме теңгергіштерін пайдалану
spec.type: LoadBalancer түріндегі барлық Kubernetes сервистері үшін VK Cloud платформасы берілген мінез-құлыққа сәйкес келетін TCP жүктеме теңгергішін автоматты түрде жасай алады.
Теңгергіш:
-
Интернеттен қолжетімді жария IP мекенжайына немесе интернеттен қолжетімсіз жеке IP мекенжайына ие бола алады. IP мекенжайын теңгергішке қолмен немесе автоматты түрде тағайындауға болады.
-
Қосылымдарды қолданба даналары арасында теңгерудің әртүрлі алгоритмдерін қолдана алады:
-
Репликаны кездейсоқ таңдау (әдепкі бойынша).
Теңгергіш осылай жұмыс істейді, себебі Cloud Containers кластерлеріндегі
kube-proxyiptablesрежимінде жұмыс істейді. Толығырақ Kubernetes ресми құжаттамасында. -
Репликаны нақты IP мекенжайына бекіту.
Бұл жағдайда теңгергіш бірінші сұрау келген IP мекенжайына қолданбаның нақты бір репликасын бекітеді. Бұл реплика қолжетімді болып тұрғанша, осы мекенжайдан келетін барлық сұраулар соған жіберіледі.
-
-
Тек белгілі бір IP мекенжайларынан қолжеткізуге рұқсат бере алады.
- Жасаңыз Kubernetes кластерін өзекті нұсқада, егер бұл әлі жасалмаған болса.
kubectlкөмегімен кластерге қосыла алатыныңызға көз жеткізіңіз.
Бұл қолданбаға сұрауларды жүктеме теңгергіші өңдейді. Теңгергіштің жұмысын көрсету үшін қолданба екі репликадан тұратын StatefulSet түрінде жайылады. Бұл жағдайда қолданбаның барлық подтары нөмірленеді, сондықтан теңгергіш сұрауды қай репликаға бағыттайтынын оңай анықтауға болады.
Осындай қолданбаны жасау үшін:
-
Манифест файлын жасаңыз:
-
Манифест негізінде Kubernetes ресурс жасаңыз:
kubectl apply -f coffee.yaml
Жайылған coffee қолданбасына қызмет көрсететін әртүрлі мінез-құлықтағы бірнеше жүктеме теңгергішін жасаңыз.
Төмендегі қойындыларда теңгергіштерді жасаудың әртүрлі сценарийлері сипатталған:
- 1-сценарий — статикалық жария мекенжайды қолмен тағайындау және репликаны кездейсоқ таңдау.
- 2-сценарий — динамикалық жария мекенжайды автоматты түрде тағайындау және репликаны бекіту.
- 3-сценарий — динамикалық жария мекенжайды автоматты түрде тағайындау, репликаны кездейсоқ таңдау, қолжеткізуді шектеу.
- 4-сценарий — динамикалық жеке мекенжайды автоматты түрде тағайындау және репликаны кездейсоқ таңдау.
-
Теңгергішке тағайындау керек жария IP мекенжайын таңдаңыз немесе жаңасын жасаңыз. Мұны VK Cloud жеке кабинетінде жасауға болады.
IP мекенжайына ішкі IP мекенжайы байланыстырылмаған болуы керек.
-
lb-static-public-ip.yamlманифест файлын жасаңыз.spec.loadBalancerIPпараметрінде таңдалған IP мекенжайын көрсетіңіз.apiVersion: v1kind: Servicemetadata:name: coffee-svc-public-static-ipspec:type: LoadBalancerloadBalancerIP: <таңдалған IP мекенжайы>ports:- port: 80targetPort: 8080protocol: TCPname: httpselector:app: coffee -
Манифест негізінде Kubernetes ресурс жасаңыз:
kubectl apply -f lb-static-public-ip.yaml -
Сервистің күйін келесі командамен мезгіл-мезгіл тексеріп отырыңыз:
kubectl get svc coffee-svc-public-static-ipСервиске қолмен берілген статикалық жария IP мекенжайы тағайындалғанша күтіңіз: кестедегі
EXTERNAL-IPбағанында<pending>орнына IP мекенжайы пайда болады.
Сервистер мен жүктеме теңгергіштері туралы толығырақ Kubernetes ресми құжаттамасында.
Төмендегі қойындыларда жүктеме теңгергіштерінің жұмысын тексерудің әртүрлі сценарийлері сипатталған:
- 1-сценарий — статикалық жария мекенжайы бар және репликаны кездейсоқ таңдайтын теңгергіш.
- 2-сценарий — динамикалық жария мекенжайы бар және репликаны бекітетін теңгергіш.
- 3-сценарий — динамикалық жария мекенжайы бар, репликаны кездейсоқ таңдайтын және қолжеткізуді шектейтін теңгергіш.
- 4-сценарий — динамикалық жеке мекенжайы бар және репликаны кездейсоқ таңдайтын теңгергіш.
-
Теңгергішке тағайындалған IP мекенжайын алыңыз:
kubectl get svc coffee-svc-public-static-ipҚажетті мекенжай кестедегі
EXTERNAL-IPбағанында орналасқан. -
Қолданбаға жүктеме теңгергіші арқылы бірнеше рет сұрау орындаңыз:
curl http://<теңгергіштің IP мекенжайы>Әртүрлі подтар жауап беруі мүмкін:
coffee-0да,coffee-1де. Мұндай мінез-құлық теңгергіштің сұрауларды қолданбаның кездейсоқ репликаларына жіберетінін білдіреді.
Жұмыс істеп тұрған кластер тарификацияланады және есептеу ресурстарын тұтынады. Егер жүктеме теңгергіштерінің жұмысын тексеру үшін жасалған Kubernetes ресурстары сізге енді қажет болмаса, оларды жойыңыз:
-
Жасалған сервистер мен StatefulSet-ті жойыңыз:
Linux/macOSWindowskubectl delete svc coffee-svc-public-static-ipkubectl delete svc coffee-svc-session-affinitykubectl delete svc coffee-svc-restrict-access-by-ipkubectl delete svc coffee-svc-private-ipkubectl delete statefulset coffee -
coffee-svc-public-static-ipсервисіне тағайындалған статикалық жария IP мекенжайын жойыңыз. -
Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.