|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Testando HPAs com kubectl
Este documento descreve como verificar o status dos seus HPAs após escalá-los para cima ou para baixo com sua ferramenta de teste de carga. Para informações sobre como verificar o status pela interface do Rancher (pelo menos versão 2.3.x), consulte Gerenciando HPAs com a interface do Rancher.
Para que o HPA funcione corretamente, as implantações de serviço devem ter definições de solicitação de recursos para os contêineres. Siga este exemplo hello-world para testar se o HPA está funcionando corretamente.
-
Configure
kubectlpara se conectar ao seu cluster Kubernetes. -
Copie o manifesto de implantação
hello-worldabaixo.Manifesto Hello World
+
apiVersion: apps/v1beta2 kind: Deployment metadata: labels: app: hello-world name: hello-world namespace: default spec: replicas: 1 selector: matchLabels: app: hello-world strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate template: metadata: labels: app: hello-world spec: containers: - image: rancher/hello-world imagePullPolicy: Always name: hello-world resources: requests: cpu: 500m memory: 64Mi ports: - containerPort: 80 protocol: TCP restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: hello-world namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: hello-world+
-
Implante-o em seu cluster.
# kubectl create -f <HELLO_WORLD_MANIFEST>
-
Copie um dos HPAs abaixo com base no tipo de métrica que você está usando:
Hello World HPA: Métricas de Recursos
+
apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hello-world namespace: default spec: scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: hello-world minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 50 - type: Resource resource: name: memory targetAverageValue: 1000Mi+
+
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: hello-world
namespace: default
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: hello-world
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 50
- type: Resource
resource:
name: memory
targetAverageValue: 100Mi
- type: Pods
pods:
metricName: cpu_system
targetAverageValue: 20m
+
-
Visualize as informações e a descrição do HPA. Confirme que os dados da métrica estão sendo exibidos.
Métricas de Recursos
-
Digite os seguintes comandos. ` # kubectl get hpa NOME REFERÊNCIA ALVO MINPODS MAXPODS REPLICAS IDADE hello-world Deployment/hello-world 1253376 / 100Mi, 0% / 50% 1 10 1 6m # kubectl describe hpa Nome: hello-world Namespace: default Rótulos: <none> Anotações: <none> Carimbo de data/hora de criação: Seg, 23 Jul 2018 20:21:16 +0200 Referência: Implantação/hello-world
Métricas: ( atual / alvo )
recurso de memória nos pods: 1253376 / 100Mi
recurso de CPU nos pods (como uma porcentagem do pedido): 0% (0) / 50%
Réplicas mínimas: 1
Réplicas máximas: 10
Condições: Tipo Status Motivo Mensagem ---- ------ ------ -------
CapazDeEscalar Verdadeiro ProntoParaNovoEscalonamento o último tempo de escalonamento foi suficientemente antigo para justificar um novo escalonamento
EscalonamentoAtivo Verdadeiro MétricaVálidaEncontrada o HPA conseguiu calcular com sucesso uma contagem de réplicas a partir do recurso de memória
EscalonamentoLimitado Falso DesejadoDentroDoIntervalo a contagem desejada está dentro do intervalo aceitável
Eventos: <none>
`
-
-
Digite o seguinte comando.
`
# kubectl describe hpa
`
Você deve receber a saída que segue.
`
Nome: hello-world
Namespace: default
Rótulos: <none>
Anotações: <none>
Carimbo de data/hora de criação: Ter, 24 Jul 2018 18:36:28 +0200
Referência: Implantação/hello-world
Métricas: ( atual / alvo )
recurso de memória nos pods: 3514368 / 100Mi "cpu_system" nos pods: 0 / 20m recurso de CPU nos pods (como uma porcentagem da solicitação): 0% (0) / 50%
Réplicas mínimas: 1
Réplicas máximas: 10
Condições: Tipo Status Motivo Mensagem ---- ------ ------ -------
CapazDeEscalar Verdadeiro ProntoParaNovoEscalonamento o último tempo de escalonamento foi suficientemente antigo para justificar um novo escalonamento
EscalonamentoAtivo Verdadeiro MétricaVálidaEncontrada o HPA conseguiu calcular com sucesso uma contagem de réplicas a partir do recurso de memória
EscalonamentoLimitado Falso DesejadoDentroDoIntervalo a contagem desejada está dentro do intervalo aceitável
Eventos: <none>
`
-
Gere uma carga para o serviço para testar se seus pods escalam automaticamente como pretendido. Você pode usar qualquer ferramenta de teste de carga (Hey, Gatling, etc.), mas estamos usando Hey.
-
Teste se o escalonamento automático de pods funciona como pretendido.
Para Testar a Escala Automática Usando Métricas de Recursos:Aumentar para 2 Pods: Uso de CPU Até o Alvo
Use sua ferramenta de teste de carga para aumentar para dois pods com base no uso de CPU.
-
Visualize seu HPA.
# kubectl describe hpa
Você deve receber uma saída semelhante ao que segue.
Name: hello-world Namespace: default Labels: <none> Annotations: <none> CreationTimestamp: Mon, 23 Jul 2018 22:22:04 +0200 Reference: Deployment/hello-world Metrics: ( current / target ) resource memory on pods: 10928128 / 100Mi resource cpu on pods (as a percentage of request): 56% (280m) / 50% Min replicas: 1 Max replicas: 10 Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 2 ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request) ScalingLimited False DesiredWithinRange the desired count is within the acceptable range Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 13s horizontal-pod-autoscaler New size: 2; reason: cpu resource utilization (percentage of request) above target
-
Digite o seguinte comando para confirmar que você escalou para dois pods.
# kubectl get pods
Você deve receber uma saída semelhante ao que segue:
NAME READY STATUS RESTARTS AGE hello-world-54764dfbf8-k8ph2 1/1 Running 0 1m hello-world-54764dfbf8-q6l4v 1/1 Running 0 3h
-
Use sua ferramenta de teste de carga para aumentar para 3 pods com base no uso de CPU com horizontal-pod-autoscaler-upscale-delay definido para 3 minutos.
-
Digite o seguinte comando.
# kubectl describe hpa
Você deve receber uma saída semelhante ao que segue
Name: hello-world Namespace: default Labels: <none> Annotations: <none> CreationTimestamp: Mon, 23 Jul 2018 22:22:04 +0200 Reference: Deployment/hello-world Metrics: ( current / target ) resource memory on pods: 9424896 / 100Mi resource cpu on pods (as a percentage of request): 66% (333m) / 50% Min replicas: 1 Max replicas: 10 Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 3 ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request) ScalingLimited False DesiredWithinRange the desired count is within the acceptable range Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m horizontal-pod-autoscaler New size: 2; reason: cpu resource utilization (percentage of request) above target Normal SuccessfulRescale 16s horizontal-pod-autoscaler New size: 3; reason: cpu resource utilization (percentage of request) above target -
Digite o seguinte comando para confirmar que três pods estão em execução.
# kubectl get pods
Você deve receber uma saída semelhante ao que segue.
NAME READY STATUS RESTARTS AGE hello-world-54764dfbf8-f46kh 0/1 Running 0 1m hello-world-54764dfbf8-k8ph2 1/1 Running 0 5m hello-world-54764dfbf8-q6l4v 1/1 Running 0 3h
Diminuir para 1 Pod: Todas as Métricas Abaixo do Alvo
Use sua ferramenta de teste de carga para reduzir para 1 pod quando todas as métricas estiverem abaixo do alvo por horizontal-pod-autoscaler-downscale-delay (5 minutos por padrão).
-
Digite o seguinte comando.
# kubectl describe hpa
Você deve receber uma saída semelhante ao que segue.
Name: hello-world Namespace: default Labels: <none> Annotations: <none> CreationTimestamp: Mon, 23 Jul 2018 22:22:04 +0200 Reference: Deployment/hello-world Metrics: ( current / target ) resource memory on pods: 10070016 / 100Mi resource cpu on pods (as a percentage of request): 0% (0) / 50% Min replicas: 1 Max replicas: 10 Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 1 ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from memory resource ScalingLimited False DesiredWithinRange the desired count is within the acceptable range Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 10m horizontal-pod-autoscaler New size: 2; reason: cpu resource utilization (percentage of request) above target Normal SuccessfulRescale 6m horizontal-pod-autoscaler New size: 3; reason: cpu resource utilization (percentage of request) above target Normal SuccessfulRescale 1s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
+ Para Testar a Escala Automática Usando Métricas Personalizadas:
+ .Aumentar para 2 Pods: Uso de CPU Até o Alvo
Details
Use sua ferramenta de teste de carga para aumentar dois pods com base no uso de CPU.
-
Digite o seguinte comando. ` # kubectl describe hpa ` Você deve receber uma saída semelhante ao que segue. ` Nome: hello-world Namespace: default Rótulos: <none> Anotações: <none> Carimbo de data/hora de criação: Ter, 24 Jul 2018 18:01:11 +0200 Referência: Implantação/hello-world Métricas: ( atual / alvo ) recurso de memória nos pods: 8159232 / 100Mi "cpu_system" nos pods: 7m / 20m recurso de CPU nos pods (como uma porcentagem da solicitação): 64% (321m) / 50% Réplicas mínimas: 1 Réplicas máximas: 10 Condições: Tipo Status Motivo Mensagem ---- ------ ------ ------- AbleToScale Verdadeiro SucceededRescale o controlador HPA conseguiu atualizar a escala alvo para 2 ScalingActive Verdadeiro ValidMetricFound o HPA conseguiu calcular com sucesso uma contagem de réplicas a partir da utilização do recurso de CPU (porcentagem do pedido) ScalingLimited Falso DesiredWithinRange a contagem desejada está dentro da faixa aceitável Eventos: Tipo Motivo Idade De Mensagem ---- ------ ---- ---- ------- Normal SuccessfulRescale 16s horizontal-pod-autoscaler Novo tamanho: 2; motivo: utilização do recurso CPU (porcentagem da solicitação) acima do alvo `
-
Digite o seguinte comando para confirmar que dois pods estão em execução. ` # kubectl get pods ` Você deve receber uma saída semelhante ao que segue. ` NOME PRONTO STATUS REINÍCIOS IDADE hello-world-54764dfbf8-5pfdr 1/1 Em execução 0 3s hello-world-54764dfbf8-q6l82 1/1 Em execução 0 6h `
Aumentar para 3 Pods: Uso de CPU Até o Alvo
Use sua ferramenta de teste de carga para aumentar para três pods quando o limite de utilização de cpu_system estiver no alvo. .. Digite o seguinte comando.
+
# kubectl describe hpa
+ Você deve receber uma saída semelhante ao que segue:
+
Name: hello-world
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Tue, 24 Jul 2018 18:01:11 +0200
Reference: Deployment/hello-world
Metrics: ( current / target )
resource memory on pods: 8374272 / 100Mi
"cpu_system" on pods: 27m / 20m
resource cpu on pods (as a percentage of request): 71% (357m) / 50%
Min replicas: 1
Max replicas: 10
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 3
ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request)
ScalingLimited False DesiredWithinRange the desired count is within the acceptable range
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulRescale 3m horizontal-pod-autoscaler New size: 2; reason: cpu resource utilization (percentage of request) above target
Normal SuccessfulRescale 3s horizontal-pod-autoscaler New size: 3; reason: pods metric cpu_system above target
-
Digite o seguinte comando para confirmar que três pods estão em execução.
# kubectl get pods
Você deve receber uma saída semelhante ao que segue:
# kubectl get pods NAME READY STATUS RESTARTS AGE hello-world-54764dfbf8-5pfdr 1/1 Running 0 3m hello-world-54764dfbf8-m2hrl 1/1 Running 0 1s hello-world-54764dfbf8-q6l82 1/1 Running 0 6h
Aumentar para 4 Pods: Uso de CPU Até o Alvo
Use sua ferramenta de teste de carga para aumentar para quatro pods com base na utilização de CPU. horizontal-pod-autoscaler-upscale-delay é definido como três minutos por padrão.
-
Digite o seguinte comando. ` # kubectl describe hpa ` Você deve receber uma saída semelhante ao que segue. ` Nome: hello-world Namespace: default Rótulos: <none> Anotações: <none> Carimbo de data/hora de criação: Ter, 24 Jul 2018 18:01:11 +0200 Referência: Implantação/hello-world Métricas: ( atual / alvo ) recurso de memória nos pods: 8374272 / 100Mi "cpu_system" nos pods: 27m / 20m recurso de CPU nos pods (como uma porcentagem da solicitação): 71% (357m) / 50% Réplicas mínimas: 1 Réplicas máximas: 10 Condições: Tipo Status Motivo Mensagem ---- ------ ------ ------- CapazDeEscalar Verdadeiro RedimensionamentoBemSucedido o controlador HPA conseguiu atualizar a escala alvo para 3 EscalonamentoAtivo Verdadeiro MétricaVálidaEncontrada o HPA conseguiu calcular com sucesso uma contagem de réplicas a partir da utilização do recurso de cpu (porcentagem da solicitação) EscalonamentoLimitado Falso DesejadoDentroDoIntervalo a contagem desejada está dentro do intervalo aceitável Eventos: Tipo Motivo Idade De Mensagem ---- ------ ---- ---- ------- Normal RedimensionamentoBemSucedido 5m horizontal-pod-autoscaler Novo tamanho: 2; razão: utilização do recurso de CPU (porcentagem da solicitação) acima do alvo Normal RedimensionamentoBemSucedido 3m horizontal-pod-autoscaler Novo tamanho: 3; razão: métrica de pods cpu_system acima do alvo Normal RedimensionamentoBemSucedido 4s horizontal-pod-autoscaler Novo tamanho: 4; razão: utilização do recurso de CPU (porcentagem da solicitação) acima do alvo `
-
Digite o seguinte comando para confirmar que quatro pods estão em execução.
# kubectl get pods
Você deve receber uma saída semelhante ao que segue.
NAME READY STATUS RESTARTS AGE hello-world-54764dfbf8-2p9xb 1/1 Running 0 5m hello-world-54764dfbf8-5pfdr 1/1 Running 0 2m hello-world-54764dfbf8-m2hrl 1/1 Running 0 1s hello-world-54764dfbf8-q6l82 1/1 Running 0 6h
Diminuir para 1 Pod: Todas as Métricas Abaixo do Alvo
Use sua ferramenta de teste de carga para reduzir para um pod quando todas as métricas estiverem abaixo do alvo para horizontal-pod-autoscaler-downscale-delay.
-
Digite o seguinte comando.
# kubectl describe hpa
Você deve receber uma saída semelhante ao que segue.
Name: hello-world Namespace: default Labels: <none> Annotations: <none> CreationTimestamp: Tue, 24 Jul 2018 18:01:11 +0200 Reference: Deployment/hello-world Metrics: ( current / target ) resource memory on pods: 8101888 / 100Mi "cpu_system" on pods: 8m / 20m resource cpu on pods (as a percentage of request): 0% (0) / 50% Min replicas: 1 Max replicas: 10 Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 1 ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from memory resource ScalingLimited False DesiredWithinRange the desired count is within the acceptable range Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 10m horizontal-pod-autoscaler New size: 2; reason: cpu resource utilization (percentage of request) above target Normal SuccessfulRescale 8m horizontal-pod-autoscaler New size: 3; reason: pods metric cpu_system above target Normal SuccessfulRescale 5m horizontal-pod-autoscaler New size: 4; reason: cpu resource utilization (percentage of request) above target Normal SuccessfulRescale 13s horizontal-pod-autoscaler New size: 1; reason: All metrics below target -
Digite o seguinte comando para confirmar que um único pod está em execução.
# kubectl get pods
Você deve receber uma saída semelhante ao que segue.
NAME READY STATUS RESTARTS AGE hello-world-54764dfbf8-q6l82 1/1 Running 0 6h