OpenShift - Scalabilità delle applicazioni

La scalabilità automatica è una funzionalità di OpenShift in cui le applicazioni distribuite possono ridimensionarsi e affondare come e quando richiesto secondo determinate specifiche. Nell'applicazione OpenShift, la scalabilità automatica è nota anche come scalabilità automatica pod. Ci sono duetypes of application scaling come segue.

Ridimensionamento verticale

Il ridimensionamento verticale consiste nell'aggiungere sempre più potenza a una singola macchina, il che significa aggiungere più CPU e disco rigido. È un vecchio metodo di OpenShift che ora non è supportato dalle versioni di OpenShift.

Ridimensionamento orizzontale

Questo tipo di ridimensionamento è utile quando è necessario gestire più richieste aumentando il numero di macchine.

In OpenShift, ci sono two methods to enable the scaling feature.

  • Utilizzando il file di configurazione della distribuzione
  • Durante l'esecuzione dell'immagine

Utilizzo del file di configurazione della distribuzione

In questo metodo, la funzione di ridimensionamento è abilitata tramite un file yaml di configurazione distribuibile. Per questo, il comando OC autoscale viene utilizzato con il numero minimo e massimo di repliche, che deve essere eseguito in un determinato momento nel cluster. Abbiamo bisogno di una definizione di oggetto per la creazione del programma di scalabilità automatica. Di seguito è riportato un esempio di file di definizione del programma di scalabilità automatica pod.

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

Una volta che abbiamo il file a posto, dobbiamo salvarlo con il formato yaml ed eseguire il seguente comando per la distribuzione.

$ oc create –f <file name>.yaml

Durante l'esecuzione dell'immagine

Si può anche scalare automaticamente senza il file yaml, utilizzando quanto segue oc autoscale comando nella riga di comando oc.

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

Questo comando genererà anche un tipo simile di file che può essere utilizzato in seguito come riferimento.

Strategie di distribuzione in OpenShift

La strategia di distribuzione in OpenShift definisce un flusso di distribuzione con diversi metodi disponibili. In OpenShift, di seguito sono riportati i fileimportant types of deployment strategies.

  • Strategia di rotazione
  • Ricrea la strategia
  • Strategia personalizzata

Di seguito è riportato un esempio di file di configurazione della distribuzione, utilizzato principalmente per la distribuzione sui nodi 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"

Nel file Deploymentconfig sopra, abbiamo la strategia Rolling.

Possiamo usare il seguente comando OC per la distribuzione.

$ oc deploy <deployment_config> --latest

Strategia di rotazione

La strategia di rotazione viene utilizzata per gli aggiornamenti in sequenza o la distribuzione. Questo processo supporta anche gli hook del ciclo di vita, che vengono utilizzati per iniettare codice in qualsiasi processo di distribuzione.

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

Ricrea la strategia

Questa strategia di distribuzione ha alcune delle caratteristiche di base della strategia di distribuzione in sequenza e supporta anche l'hook del ciclo di vita.

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

Strategia personalizzata

Ciò è molto utile quando si desidera fornire il proprio processo o flusso di distribuzione. Tutte le personalizzazioni possono essere effettuate secondo il requisito.

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