VK Cloud logo

Топтағы түйіндерді резервтеу

Кластерде ресурстар таусылған кезде автоматты масштабтау агенті (Cluster Autoscaler) жаңа торап жасап, оны кластерге қосады. Бұл 4–7 минутты алады, осы уақыт ішінде қолданбаңыз трафикке шамадан тыс жүктелуі мүмкін.

Масштабтау уақытын қысқарту үшін ресурстарды алдын ала бөлуді (overprovisioning) баптаңыз. Бұл жоғары басымдықтағы тапсырмаларды күту кезінде тораптарда ресурстарды резервтеуге мүмкіндік береді.

Төменде кластер конфигурациясына ресурстарды алдын ала бөлу баптауын қалай қосуға болатыны көрсетіледі. Бұл мысалда баптау бөлек файлда сипатталып, kubectl көмегімен қолданылады.

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

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

  2. Егер бұл әлі жасалмаса, kubectl утилитасын орнатып, баптаңыз.

  3. kubectl көмегімен кластерге қосылыңыз.

  4. Масштабталатын түйіннің CPU және RAM деректерін дайындаңыз:

    1. Кластерге қосылу сессиясы ашылған терминалда мына пәрменді орындаңыз:

      kubectl get nodes -o wide

      Жауапта кластер түйіндерінің тізімі қайтарылады. worker-түйіннің атауын сақтап қойыңыз.

    2. worker-түйіннің толық сипаттамасын алыңыз. Пәрменді орындаңыз:

      kubectl describe node <ИМЯ_WORKER-УЗЛА>

      Жауапта түйіннің толық сипаттамасы қайтарылады. Allocatable параметрінен cpu және memory мәндерін табыңыз. Осы мәндерді сақтап қойыңыз. Бұл мысалда cpu: 940m және memory: 1454740Ki мәндері қолданылады.

1. Кластерге бос под қосуды баптаңыз

  1. Компьютеріңізде placeholder.yaml файлын жасаңыз.

  2. Оған төмендегі мазмұнды қосып, сақтаңыз:

    apiVersion: scheduling.k8s.io/v1kind: PriorityClassmetadata:  name: overprovisioningvalue: -10globalDefault: falsedescription: "Priority class used by overprovisioning."---apiVersion: apps/v1kind: Deploymentmetadata:  name: overprovisioning  namespace: defaultspec:  replicas: 1  selector:    matchLabels:      run: overprovisioningtemplate:  metadata:    labels:      run: overprovisioning  spec:    priorityClassName: overprovisioning    terminationGracePeriodSeconds: 0    containers:     - name: reserve-resources       image: registry.k8s.io/pause:3.9       resources:         requests:           cpu: 940m           memory: 1454740Ki         limits:           cpu: 940m           memory: 1454740Ki

    Мұнда:

    • PriorityClass: подтардың басымдығын анықтайды. value: -10 қосылатын подқа төмен басымдық тағайындайды. Жоғарырақ басымдықтағы подтар қолжетімді болған кезде, олар түйіндерге орналастырылып, төмен басымдықтағы подтарды ығыстырады.
    • Deployment: резервтік ресурстар жасайтын подтардың жайылуын қамтамасыз етеді.
    • cpu: осы параметрде requests және limits блоктары үшін бұрын алынған worker-түйін үлгісінің бірдей CPU мәндерін көрсетіңіз. Бұл мысалда 940m.
    • memory: осы параметрде requests және limits блоктары үшін бұрын алынған worker-түйін үлгісінің бірдей RAM мәндерін көрсетіңіз. Бұл мысалда 1454740Ki.
  3. Терминалды ашып, placeholder.yaml файлын сақтаған директорияға өтіңіз.

  4. Пәрменді орындаңыз:

    kubectl apply -f placeholder.yaml

    Егер пәрмен сәтті орындалса, жауапта PriorityClass және Deployment жасалғаны туралы растау қайтарылады.

2. Баптаулардың қолданылуын тексеріңіз

  1. VK Cloud жеке кабинетіне өтіңіз.
  2. Қажетті кластер орналасқан жобаны таңдаңыз.
  3. КонтейнерлерKubernetes кластерлері бөліміне өтіңіз.
  4. Қажетті кластердің атауын басыңыз.
  5. Кластер ресурстары қойындысына өтіңіз.
  6. Подтар тізімін ашып, тізімде overprovisioning поды Running күйімен қосылғанына көз жеткізіңіз.

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

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