Casos de prueba en el escenario de coubicación nativa de la nube de CCE

Este artículo es compartido por la comunidad de la nube de Huawei " Prueba sobre el efecto de adelantarse a las tareas en línea, suprimir los recursos de la CPU para las tareas sin conexión y garantizar la calidad del servicio para las tareas en línea en el escenario de implementación mixta nativa de la nube de CCE . El autor: Puedes hacer amigos". .

fondo

Los entornos de TI empresariales suelen ejecutar dos tipos principales de procesos: uno son los servicios en línea y el otro son las operaciones fuera de línea.

Tareas en línea : tiempo de ejecución prolongado, tráfico de servicios y utilización de recursos tienen características de marea, son sensibles a los retrasos y tienen altos requisitos de SLA de servicio, como servicios de transacciones de comercio electrónico, etc.

Tareas fuera de línea : El tiempo de ejecución se divide en intervalos, la tasa de utilización de recursos es alta durante la operación, el retraso no es sensible, la tasa de tolerancia a fallas es alta y las interrupciones generalmente permiten la repetición, como el procesamiento de big data, etc.

La forma principal de coubicación es mejorar la utilización de recursos mediante la implementación de tareas en línea y fuera de línea en el mismo nodo. Por ejemplo, un nodo anteriormente implementaba 3 tareas en línea con un SLA de alto servicio y ahora implementa 3 tareas en línea y 3 tareas fuera de línea. De manera mixta, los servicios fuera de línea utilizan los recursos inactivos de los servicios en línea en varios períodos sin afectar la calidad del servicio de los servicios en línea.

En el nivel de ubicación conjunta del contenedor, implica principalmente: 1) En el nivel de programación, los recursos de programación del nodo están sobreprogramados y las tareas en línea y fuera de línea se mezclan y programan en el mismo nodo; 2) En el nivel de CPU, las tareas en línea; se adelantan y las tareas fuera de línea se suprimen 3) El nivel de memoria no se presenta en este artículo; A través del poder de la CPU de la tecnología coubicada, se puede lograr que durante el proceso de operación, el sistema completará automáticamente la "prevención" y la "supresión" en línea de los recursos de tareas fuera de línea de acuerdo con el uso de los recursos de tareas en línea y fuera de línea. para garantizar las demandas de recursos de los recursos en línea. Tomemos como ejemplo una máquina de 4 núcleos:

  • Cuando una tarea en línea requiere recursos de CPU de 3 núcleos, el sistema necesita "suprimir" la tarea fuera de línea para utilizar hasta un recurso de CPU de 1 núcleo;
  • Las tareas en línea estaban en el punto más bajo del negocio en ese momento y solo usaban un recurso de CPU central. Las tareas fuera de línea podían usar los recursos de CPU restantes en el corto plazo cuando el negocio de tareas en línea aumentó, el sistema aseguró que el negocio en línea; podría "adelantarse" a los recursos de CPU empresariales fuera de línea;

Preparación ambiental

Requisitos medioambientales

Versión de clúster :

  • Clúster v1.19: v1.19.16-r4 y superiores
  • Clúster v1.21: v1.21.7-r0 y superiores
  • Clúster v1.23: v1.23.5-r0 y superior
  • v1.25 y superior

Tipo de clúster : clúster CCE estándar o clúster CCE Turbo.

Sistema operativo del nodo : EulerOS 2.9 (kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64) o Huawei Cloud EulerOS 2.0

Tipo de nodo : máquina virtual elástica.

Versión del complemento Volcano : 1.7.0 y superior.

información ambiental

El clúster CCE implementa complementos kube-prometheus-stack, grafana y volcan

imagen.png

imagen.png

imagen.png

Demostración de supresión y preferencia de CPU

Línea base de la prueba de estrés

Cree la carga de trabajo requerida para la demostración y asegúrese de que las dos cargas de trabajo estén programadas en el mismo nodo (dado que la expresión general en el panel está asociada con el nombre del pod, se recomienda no usar el nombre de la carga de trabajo; de lo contrario, afectará la visualización normal del salpicadero)

tipo: Despliegue
Versión api: aplicaciones/v1
metadatos:
  nombre: redis        
Especificaciones:
  réplicas: 1
  selector:
    coincidirEtiquetas:
      aplicación: redis
  plantilla:
    metadatos:
      marca de tiempo de creación: nulo
      etiquetas:
        aplicación: redis
      anotaciones:
        prometheus.io/ruta: /métricas
        prometheus.io/port: '9121'
        prometheus.io/scrape: 'verdadero'
    Especificaciones:
      contenedores:
        - nombre: contenedor-1
          imagen: swr.cn-north-4.myhuaweicloud.com/testapp/redis:v6
          recursos:
            límites:
              CPU: '1'
            peticiones:
              procesador: 250m
        - nombre: contenedor-2
          imagen: bitnami/redis-exporter:latest
          recursos:
            límites:
              procesador: 250m
              memoria: 512Mi
            peticiones:
              procesador: 250m
              memoria: 512Mi
      imagenPullSecrets:
        - nombre: secreto predeterminado
      Nombre del planificador: volcán
---
tipo: Despliegue
Versión api: aplicaciones/v1
metadatos:
  nombre: estrés
Especificaciones:
  réplicas: 1
  selector:
    coincidirEtiquetas:
      aplicación: estrés
  plantilla:
    metadatos:
      etiquetas:
        aplicación: estrés
    Especificaciones:
      contenedores:
        - nombre: contenedor-1
          imagen: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1
          dominio:
            - /bin/bash
          argumentos:
            - '-C'
            - si bien es cierto; haz eco hola; dormir 10; hecho
          recursos:
            límites:
              procesador: '4'
              memoria: 4Gi
            peticiones:
              procesador: 2500m
              memoria: 1Gi
      imagenPullSecrets:
        - nombre: secreto predeterminado
      Nombre del planificador: volcán
      afinidad:
        podAfinidad:
          requerido durante la programación ignorado durante la ejecución:
            - selector de etiquetas:
                coincidenciaExpresiones:
                  - clave: aplicación
                    operador: en
                    valores:
                      -redis
              espacios de nombres:
                - por defecto
              Clave de topología: kubernetes.io/hostname

Utilice el comando redis-benchmark para realizar una prueba de esfuerzo de redis 192.168.1.159para la IP del Pod de redis ;

./redis-benchmark -h 192.168.1.159 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

Observe los indicadores de Redis y el uso de la CPU en la página de Grafana, que se pueden utilizar como datos de referencia de referencia sin interferencias.

imagen.png

Escena no mixta

Cree un grupo de nodos para la implementación híbrida y vuelva a implementar las cargas de trabajo anteriores en nuevos nodos.

Utilice el comando redis-benchmark nuevamente para probar redis 192.168.1.172para la IP del Pod de redis ;

./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

Ingrese al contenedor de estrés. Una vez que el indicador de Redis alcance la línea base y se estabilice, ejecute el comando para aumentar el uso de la CPU.

estrés de -c 4 -t 3600

Observe los indicadores de Redis y el uso de CPU en la página de Grafana y descubra que los datos de rendimiento de Redis se degradaron rápidamente durante la prueba de estrés del contenedor.

imagen.png

escena mixta

Actualice el grupo de nodos y configure la etiqueta híbrida para el nodo en la configuración avanzada:volcano.sh/colocation="true"

imagen.png

Haga clic en la gestión de configuración del grupo de nodos-configuración del componente kubelet-habilite la función de ubicación conjunta de nodos

imagen.png

Modifique el umbral de desalojo del nodo a 100 para evitar el desalojo directo cuando el uso de la CPU supere el umbral durante las pruebas de estrés.

kubectl anotar nodo 192.168.0.209 volcan.sh/evicting-cpu-high-watermark=100

Modifique la anotación de la carga de trabajo de estrés y márquela como negocio fuera de línea. No es necesario modificar la carga de trabajo de Redis.

tipo: Despliegue
Versión api: aplicaciones/v1
metadatos:
  nombre: estrés
Especificaciones:
  réplicas: 1
  selector:
    coincidirEtiquetas:
      aplicación: estrés
  plantilla:
    metadatos:
      etiquetas:
        aplicación: estrés
      anotaciones:          
        volcan.sh/qos-level: "-1" # Anotaciones de trabajo sin conexión
    Especificaciones:
      contenedores:
        - nombre: contenedor-1
          imagen: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1
          dominio:
            - /bin/bash
          argumentos:
            - '-C'
            - si bien es cierto; haz eco hola; dormir 10; hecho
          recursos:
            límites:
              procesador: '4'
              memoria: 4Gi
            peticiones:
              procesador: 2500m
              memoria: 1Gi
      imagenPullSecrets:
        - nombre: secreto predeterminado
      Nombre del planificador: volcán
      afinidad:
        podAfinidad:
          requerido durante la programación ignorado durante la ejecución:
            - selector de etiquetas:
                coincidenciaExpresiones:
                  - clave: aplicación
                    operador: en
                    valores:
                      -redis
              espacios de nombres:
                - por defecto
              Clave de topología: kubernetes.io/hostname
Utilice el comando redis-benchmark para realizar una prueba de esfuerzo de redis 192.168.1.172 para la IP del Pod de redis ;
./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN
Ingrese al contenedor de estrés. Una vez que el indicador de Redis alcance la línea base y se estabilice, ejecute el comando para aumentar el uso de la CPU.
estrés de -c 4 -t 3600

Observe los indicadores de redis y el uso de CPU en la página de grafana. En el escenario mixto, incluso si las tareas fuera de línea intentan agotar la CPU del nodo, el sistema operativo aún mantiene las demandas de CPU de las tareas en línea, lo que garantiza la calidad del servicio de las tareas en línea. .

imagen.png

 

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~

 

Un programador nacido en los años 90 desarrolló un software de portabilidad de vídeo y ganó más de 7 millones en menos de un año. ¡El final fue muy duro! Los estudiantes de secundaria crean su propio lenguaje de programación de código abierto como una ceremonia de mayoría de edad: comentarios agudos de los internautas: debido al fraude desenfrenado, confiando en RustDesk, el servicio doméstico Taobao (taobao.com) suspendió los servicios domésticos y reinició el trabajo de optimización de la versión web Java 17 es la versión Java LTS más utilizada. Cuota de mercado de Windows 10. Alcanzando el 70%, Windows 11 continúa disminuyendo. Open Source Daily | Google apoya a Hongmeng para hacerse cargo de los teléfonos Android de código abierto respaldados por Docker; Electric cierra la plataforma abierta Apple lanza el chip M4 Google elimina el kernel universal de Android (ACK) Soporte para la arquitectura RISC-V Yunfeng renunció a Alibaba y planea producir juegos independientes en la plataforma Windows en el futuro
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/11093550
Recomendado
Clasificación