VK Cloud logo

Жүктеме теңгергіштерін пайдалану

spec.type: LoadBalancer түріндегі барлық Kubernetes сервистері үшін VK Cloud платформасы берілген мінез-құлыққа сәйкес келетін TCP жүктеме теңгергішін автоматты түрде жасай алады.

Теңгергіш:

  • Интернеттен қолжетімді жария IP мекенжайына немесе интернеттен қолжетімсіз жеке IP мекенжайына ие бола алады. IP мекенжайын теңгергішке қолмен немесе автоматты түрде тағайындауға болады.

  • Қосылымдарды қолданба даналары арасында теңгерудің әртүрлі алгоритмдерін қолдана алады:

    • Репликаны кездейсоқ таңдау (әдепкі бойынша).

      Теңгергіш осылай жұмыс істейді, себебі Cloud Containers кластерлеріндегі kube-proxy iptables режимінде жұмыс істейді. Толығырақ Kubernetes ресми құжаттамасында.

    • Репликаны нақты IP мекенжайына бекіту.

      Бұл жағдайда теңгергіш бірінші сұрау келген IP мекенжайына қолданбаның нақты бір репликасын бекітеді. Бұл реплика қолжетімді болып тұрғанша, осы мекенжайдан келетін барлық сұраулар соған жіберіледі.

  • Тек белгілі бір IP мекенжайларынан қолжеткізуге рұқсат бере алады.

Дайындық қадамдары

  1. Жасаңыз Kubernetes кластерін өзекті нұсқада, егер бұл әлі жасалмаған болса.
  2. kubectl көмегімен кластерге қосыла алатыныңызға көз жеткізіңіз.

1. Қолданба жасаңыз

Бұл қолданбаға сұрауларды жүктеме теңгергіші өңдейді. Теңгергіштің жұмысын көрсету үшін қолданба екі репликадан тұратын StatefulSet түрінде жайылады. Бұл жағдайда қолданбаның барлық подтары нөмірленеді, сондықтан теңгергіш сұрауды қай репликаға бағыттайтынын оңай анықтауға болады.

Осындай қолданбаны жасау үшін:

  1. Манифест файлын жасаңыз:

  2. Манифест негізінде Kubernetes ресурс жасаңыз:

    kubectl apply -f coffee.yaml

2. Жүктеме теңгергіштерін жасаңыз

Жайылған coffee қолданбасына қызмет көрсететін әртүрлі мінез-құлықтағы бірнеше жүктеме теңгергішін жасаңыз.

Төмендегі қойындыларда теңгергіштерді жасаудың әртүрлі сценарийлері сипатталған:

  • 1-сценарий — статикалық жария мекенжайды қолмен тағайындау және репликаны кездейсоқ таңдау.
  • 2-сценарий — динамикалық жария мекенжайды автоматты түрде тағайындау және репликаны бекіту.
  • 3-сценарий — динамикалық жария мекенжайды автоматты түрде тағайындау, репликаны кездейсоқ таңдау, қолжеткізуді шектеу.
  • 4-сценарий — динамикалық жеке мекенжайды автоматты түрде тағайындау және репликаны кездейсоқ таңдау.
  1. Теңгергішке тағайындау керек жария IP мекенжайын таңдаңыз немесе жаңасын жасаңыз. Мұны VK Cloud жеке кабинетінде жасауға болады.

    IP мекенжайына ішкі IP мекенжайы байланыстырылмаған болуы керек.

  2. lb-static-public-ip.yaml манифест файлын жасаңыз.

    spec.loadBalancerIP параметрінде таңдалған IP мекенжайын көрсетіңіз.

    apiVersion: v1kind: Servicemetadata:  name: coffee-svc-public-static-ipspec:  type: LoadBalancer  loadBalancerIP: <таңдалған IP мекенжайы>  ports:  - port: 80    targetPort: 8080    protocol: TCP    name: http  selector:    app: coffee
  3. Манифест негізінде Kubernetes ресурс жасаңыз:

    kubectl apply -f lb-static-public-ip.yaml
  4. Сервистің күйін келесі командамен мезгіл-мезгіл тексеріп отырыңыз:

    kubectl get svc coffee-svc-public-static-ip

    Сервиске қолмен берілген статикалық жария IP мекенжайы тағайындалғанша күтіңіз: кестедегі EXTERNAL-IP бағанында <pending> орнына IP мекенжайы пайда болады.

Сервистер мен жүктеме теңгергіштері туралы толығырақ Kubernetes ресми құжаттамасында.

3. Жүктеме теңгергіштерінің жұмысын тексеріңіз

Төмендегі қойындыларда жүктеме теңгергіштерінің жұмысын тексерудің әртүрлі сценарийлері сипатталған:

  • 1-сценарий — статикалық жария мекенжайы бар және репликаны кездейсоқ таңдайтын теңгергіш.
  • 2-сценарий — динамикалық жария мекенжайы бар және репликаны бекітетін теңгергіш.
  • 3-сценарий — динамикалық жария мекенжайы бар, репликаны кездейсоқ таңдайтын және қолжеткізуді шектейтін теңгергіш.
  • 4-сценарий — динамикалық жеке мекенжайы бар және репликаны кездейсоқ таңдайтын теңгергіш.
  1. Теңгергішке тағайындалған IP мекенжайын алыңыз:

    kubectl get svc coffee-svc-public-static-ip

    Қажетті мекенжай кестедегі EXTERNAL-IP бағанында орналасқан.

  2. Қолданбаға жүктеме теңгергіші арқылы бірнеше рет сұрау орындаңыз:

    curl http://<теңгергіштің IP мекенжайы>

    Әртүрлі подтар жауап беруі мүмкін: coffee-0 да, coffee-1 де. Мұндай мінез-құлық теңгергіштің сұрауларды қолданбаның кездейсоқ репликаларына жіберетінін білдіреді.

Пайдаланылмайтын ресурстарды жойыңыз

Жұмыс істеп тұрған кластер тарификацияланады және есептеу ресурстарын тұтынады. Егер жүктеме теңгергіштерінің жұмысын тексеру үшін жасалған Kubernetes ресурстары сізге енді қажет болмаса, оларды жойыңыз:

  1. Жасалған сервистер мен StatefulSet-ті жойыңыз:

    kubectl 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
  2. coffee-svc-public-static-ip сервисіне тағайындалған статикалық жария IP мекенжайын жойыңыз.

  3. Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.