OpenShift - Dimensionamento de aplicativos
O escalonamento automático é um recurso do OpenShift em que os aplicativos implantados podem ser escalonados e afundados conforme e quando necessário de acordo com certas especificações. No aplicativo OpenShift, o escalonamento automático também é conhecido como escalonamento automático de pod. São doistypes of application scaling do seguinte modo.
Dimensionamento Vertical
A escala vertical tem tudo a ver com adicionar mais e mais energia a uma única máquina, o que significa adicionar mais CPU e disco rígido. O é um método antigo de OpenShift que agora não é suportado por versões do OpenShift.
Dimensionamento Horizontal
Este tipo de escalonamento é útil quando há necessidade de lidar com mais solicitações, aumentando o número de máquinas.
No OpenShift, existem two methods to enable the scaling feature.
- Usando o arquivo de configuração de implantação
- Durante a execução da imagem
Usando o arquivo de configuração de implantação
Neste método, o recurso de dimensionamento é ativado por meio de um arquivo yaml de configuração de deploymant. Para isso, o comando OC autoscale é usado com um número mínimo e máximo de réplicas, que precisam ser executadas em qualquer ponto do tempo no cluster. Precisamos de uma definição de objeto para a criação do autoescalador. A seguir está um exemplo de arquivo de definição do autoescalador 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
Assim que tivermos o arquivo no lugar, precisamos salvá-lo com o formato yaml e executar o seguinte comando para implantação.
$ oc create –f <file name>.yaml
Durante a execução da imagem
Também é possível escalonar automaticamente sem o arquivo yaml, usando o seguinte oc autoscale comando na linha de comando oc.
$ oc autoscale dc/database --min 1 --max 5 --cpu-percent = 75
deploymentconfig "database" autoscaled
Este comando também irá gerar um tipo de arquivo semelhante que pode ser usado posteriormente como referência.
Estratégias de implantação em OpenShift
A estratégia de implantação no OpenShift define um fluxo de implantação com diferentes métodos disponíveis. No OpenShift, a seguir estão osimportant types of deployment strategies.
- Estratégia de rolamento
- Estratégia de recriação
- Estratégia personalizada
A seguir está um exemplo de arquivo de configuração de implantação, que é usado principalmente para implantação em nós 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"
No arquivo Deploymentconfig acima, temos a estratégia como Rolling.
Podemos usar o seguinte comando OC para implantação.
$ oc deploy <deployment_config> --latest
Estratégia de Rolling
A estratégia contínua é usada para atualizações contínuas ou implantação. Esse processo também oferece suporte a ganchos de ciclo de vida, que são usados para injetar código em qualquer processo de implantação.
strategy:
type: Rolling
rollingParams:
timeoutSeconds: <time in seconds>
maxSurge: "<definition in %>"
maxUnavailable: "<Defintion in %>"
pre: {}
post: {}
Estratégia de Recriação
Essa estratégia de implantação tem alguns dos recursos básicos da estratégia de implantação contínua e também oferece suporte ao gancho do ciclo de vida.
strategy:
type: Recreate
recreateParams:
pre: {}
mid: {}
post: {}
Estratégia Personalizada
Isso é muito útil quando se deseja fornecer seu próprio processo ou fluxo de implantação. Todas as personalizações podem ser feitas de acordo com o requisito.
strategy:
type: Custom
customParams:
image: organization/mongoDB
command: [ "ls -l", "$HOME" ]
environment:
- name: VipinOpenshiftteat
value: Dev1