OpenShift - skalowanie aplikacji

Automatyczne skalowanie to funkcja w OpenShift, w której wdrożone aplikacje mogą skalować się i zlewać zgodnie z określonymi specyfikacjami. W aplikacji OpenShift autoskalowanie jest również nazywane autoskalowaniem podów. Istnieją dwatypes of application scaling następująco.

Skalowanie pionowe

Skalowanie pionowe polega na dodawaniu coraz większej mocy do pojedynczej maszyny, co oznacza dodawanie większej ilości procesora i dysku twardego. Jest to stara metoda OpenShift, która nie jest teraz obsługiwana przez wersje OpenShift.

Skalowanie poziome

Ten rodzaj skalowania jest przydatny, gdy istnieje potrzeba obsługi większej liczby żądań poprzez zwiększenie liczby maszyn.

W OpenShift jest two methods to enable the scaling feature.

  • Korzystanie z pliku konfiguracji wdrożenia
  • Podczas uruchamiania obrazu

Korzystanie z pliku konfiguracji wdrażania

W tej metodzie funkcja skalowania jest włączana za pośrednictwem deploymantowego pliku konfiguracyjnego yaml. W tym celu używane jest polecenie OC autoscale z minimalną i maksymalną liczbą replik, które muszą być uruchomione w dowolnym momencie w klastrze. Potrzebujemy definicji obiektu do stworzenia autoskalera. Poniżej znajduje się przykład pliku definicji autoskalera podów.

apiVersion: extensions/v1beta1
kind: HorizontalPodAutoscaler
metadata:
   name: database
spec:
   scaleRef:
      kind: DeploymentConfig
      name: database
      apiVersion: v1
      subresource: scale
   minReplicas: 1
   maxReplicas: 10
   cpuUtilization:
      targetPercentage: 80

Po przygotowaniu pliku musimy zapisać go w formacie yaml i uruchomić następujące polecenie w celu wdrożenia.

$ oc create –f <file name>.yaml

Podczas uruchamiania obrazu

Można również skalować automatycznie bez pliku yaml, korzystając z następującego polecenia oc autoscale polecenie w linii poleceń oc.

$ oc autoscale dc/database --min 1 --max 5 --cpu-percent = 75
deploymentconfig "database" autoscaled

To polecenie wygeneruje również podobny rodzaj pliku, który można później wykorzystać jako odniesienie.

Strategie wdrażania w OpenShift

Strategia wdrażania w OpenShift definiuje przepływ wdrażania za pomocą różnych dostępnych metod. W OpenShift następujące plikiimportant types of deployment strategies.

  • Strategia krocząca
  • Odtwórz strategię
  • Strategia niestandardowa

Poniżej znajduje się przykład pliku konfiguracji wdrożenia, który jest używany głównie do wdrażania na węzłach OpenShift.

kind: "DeploymentConfig"
apiVersion: "v1"
metadata:
   name: "database"
spec:
   template:
      metadata:
         labels:
            name: "Database1"
spec:
   containers:
      - name: "vipinopenshifttest"
         image: "openshift/mongoDB"
         ports:
            - containerPort: 8080
               protocol: "TCP"
replicas: 5
selector:
   name: "database"
triggers:
- type: "ConfigChange"
- type: "ImageChange"
   imageChangeParams:
      automatic: true
      containerNames:
         - "vipinopenshifttest"
      from:
         kind: "ImageStreamTag"
         name: "mongoDB:latest"
   strategy:
      type: "Rolling"

W powyższym pliku Deploymentconfig mamy strategię Rolling.

Do wdrożenia możemy użyć następującego polecenia OC.

$ oc deploy <deployment_config> --latest

Strategia krocząca

Strategia krocząca jest używana do aktualizacji kroczących lub wdrażania. Ten proces obsługuje również punkty zaczepienia cyklu życia, które służą do wstrzykiwania kodu do dowolnego procesu wdrażania.

strategy:
   type: Rolling
   rollingParams:
      timeoutSeconds: <time in seconds>
      maxSurge: "<definition in %>"
      maxUnavailable: "<Defintion in %>"
      pre: {}
      post: {}

Odtwórz strategię

Ta strategia wdrażania ma kilka podstawowych cech strategii wdrażania kroczącego, a także obsługuje podpięcie cyklu życia.

strategy:
   type: Recreate
   recreateParams:
      pre: {}
      mid: {}
      post: {}

Strategia niestandardowa

Jest to bardzo pomocne, gdy chce się zapewnić własny proces lub przepływ wdrażania. Wszystkie dostosowania można wykonać zgodnie z wymaganiami.

strategy:
   type: Custom
   customParams:
      image: organization/mongoDB
      command: [ "ls -l", "$HOME" ]
      environment:
         - name: VipinOpenshiftteat
         value: Dev1