OpenShift: escalado de aplicaciones
El ajuste de escala automático es una función de OpenShift en la que las aplicaciones implementadas pueden escalar y hundirse cuando sea necesario según determinadas especificaciones. En la aplicación OpenShift, el ajuste de escala automático también se conoce como ajuste de escala automático de pod. Hay dostypes of application scaling como sigue.
Escala vertical
El escalado vertical se trata de agregar más y más potencia a una sola máquina, lo que significa agregar más CPU y disco duro. Es un método antiguo de OpenShift que ahora no es compatible con las versiones de OpenShift.
Escala horizontal
Este tipo de escalado es útil cuando existe la necesidad de manejar más solicitudes aumentando el número de máquinas.
En OpenShift, hay two methods to enable the scaling feature.
- Usando el archivo de configuración de implementación
- Mientras ejecuta la imagen
Uso del archivo de configuración de implementación
En este método, la función de escalado se habilita mediante un archivo yaml de configuración de implementación. Para ello, se utiliza el comando OC autoscale con un número mínimo y máximo de réplicas, que debe ejecutarse en cualquier momento del clúster. Necesitamos una definición de objeto para la creación del escalador automático. A continuación, se muestra un ejemplo de archivo de definición de escalador automático de 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 vez que tenemos el archivo en su lugar, debemos guardarlo con el formato yaml y ejecutar el siguiente comando para la implementación.
$ oc create –f <file name>.yaml
Mientras ejecuta la imagen
También se puede escalar automáticamente sin el archivo yaml, utilizando lo siguiente oc autoscale comando en la línea de comando oc.
$ oc autoscale dc/database --min 1 --max 5 --cpu-percent = 75
deploymentconfig "database" autoscaled
Este comando también generará un tipo de archivo similar que luego se puede usar como referencia.
Estrategias de implementación en OpenShift
La estrategia de implementación en OpenShift define un flujo de implementación con diferentes métodos disponibles. En OpenShift, los siguientes son losimportant types of deployment strategies.
- Estrategia rodante
- Recrear estrategia
- Estrategia personalizada
A continuación se muestra un ejemplo de archivo de configuración de implementación, que se utiliza principalmente para la implementación en nodos de 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"
En el archivo Deploymentconfig anterior, tenemos la estrategia como Rolling.
Podemos usar el siguiente comando OC para la implementación.
$ oc deploy <deployment_config> --latest
Estrategia rodante
La estrategia progresiva se utiliza para actualizaciones continuas o implementación. Este proceso también admite enlaces de ciclo de vida, que se utilizan para inyectar código en cualquier proceso de implementación.
strategy:
type: Rolling
rollingParams:
timeoutSeconds: <time in seconds>
maxSurge: "<definition in %>"
maxUnavailable: "<Defintion in %>"
pre: {}
post: {}
Recrear estrategia
Esta estrategia de implementación tiene algunas de las características básicas de la estrategia de implementación continua y también admite el enlace del ciclo de vida.
strategy:
type: Recreate
recreateParams:
pre: {}
mid: {}
post: {}
Estrategia personalizada
Esto es muy útil cuando se desea proporcionar su propio proceso o flujo de implementación. Todas las personalizaciones se pueden hacer según el requisito.
strategy:
type: Custom
customParams:
image: organization/mongoDB
command: [ "ls -l", "$HOME" ]
environment:
- name: VipinOpenshiftteat
value: Dev1