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