Mejores prácticas de Kubernetes para mejorar la eficiencia del clúster

Mejores prácticas de Kubernetes para mejorar la eficiencia del clúster

  • ITOps y DevOps
6 min de lectura Actualizado Oct 29, 2020

Puntos clave: Las mejores prácticas de Kubernetes mejoran la eficiencia y seguridad del clúster mientras optimizan la construcción de aplicaciones. Las estrategias clave incluyen el uso de la última versión, la implementación de espacios de nombres para la asignación de recursos, la adopción de GitOps para flujos de trabajo CI/CD y la auditoría regular de los registros de políticas para supervisa el consumo de recursos.

  • Siempre utiliza la última versión de Kubernetes para seguridad y funciones.
  • Utiliza espacios de nombres para aislamiento a nivel de equipo y asignación de recursos.
  • Adopta GitOps para flujos de trabajo CI/CD optimizados.
  • Auditar regularmente los registros de políticas para identificar amenazas y supervisa el consumo de recursos.

Con la contenedorización cambiando rápidamente los patrones arquitectónicos de desarrollo de aplicaciones, la plataforma Kubernetes sigue siendo su referente. Según la Encuesta de Adopción de Contenedores de Forrester de 2020, aproximadamente el 65% de las organizaciones encuestadas ya son utilizando, o son planeando utiliza, herramientas de orquestación de contenedores como parte de su estrategia de transformación informática. Lo más probable es que la popularidad de Kubernetes solo crezca.

Aunque Kubernetes ofrece una solución de contenedores preparada para mejorar la productividad, los casos de utiliza también indican que confiar únicamente en servicios Kubernetes listos para conteneír las compilaciones de aplicaciones no siempre es la mejor opción. Para Obtén el máximo partido a K8s, implementa las mejores prácticas y sigue un modelo configurado a medida para asegurar la plataforma óptima que requiere tu construcción de aplicaciones.

Este artículo profundizará en 11 mejores prácticas para lograr un modelo de clúster Kubernetes que están escalable, seguro y altamente optimizado.

Mejores prácticas de Kubernetes

1. Descargar la última versión

Con sus actualizaciones regulares de versiones, Kubernetes lanza nuevas funciones, correcciones de errores y actualizaciones de plataforma. Como regla general, te siempre debes utiliza la última versión de Kubernetes en tu clúster. Esto garantiza que tu versión tenga:

  • Todas las funciones actualizadas, para que no te pierdas el soporte de versiones antiguas y no compatibles.
  • Actualizaron los parches de seguridad que posponen posibles vectores de ataque mientras corrigen vulnerabilidades reportadas.

Aunque las funciones actualizadas son buenas, la seguridad actualizada es crucial.

2. Utilizar espacios de nombres

Adoptar Kubernetes en organizaciones más grandes con múltiples equipos accediendo al mismo clúster requiere un enfoque personalizado para el uso de recursos. Una provisión inadecuada de accesibilidad suele generar conflictos entre equipos en cuanto al uso de recursos.

Para solucionar esto, utiliza espacios de nombres para Lograr aislamiento a nivel de equipo para equipos que intentan acceder simultáneamente a los mismos recursos del clúster. El uso eficiente de los espacios de nombres ayuda a Crea múltiples particiones lógicas de clúster, asignando así recursos virtuales distintos entre los equipos.

3. Mantener imágenes de contenedores pequeños

La mayoría de los desarrolladores Haz el error de usar la imagen base desde el principio, que puede tener hasta un 80% de los paquetes y librerías que no necesitan.

Siempre utiliza imágenes de contenedores más pequeñas porque te ayuda a Crear compilaciones más rápidas. Como buena práctica, debes:

  • Elige Imágenes Alpinas, ya que son 10 veces más pequeñas que las imágenes base
  • Añade las bibliotecas y paquetes necesarios según sea necesario para tu solicitud.

Las imágenes más pequeñas también son menos susceptibles a vectores de ataque debido a una superficie de ataque reducida.

4. Establecer solicitudes de recursos y límites

Para evitar casos en los que un solo equipo o aplicación agote todos los recursos del clúster, establece solicitudes y límites para los recursos del clúster, específicamente CPU y memoria. Hacerlo limita el uso desproporcionado de recursos por parte de aplicaciones y servicios, evitando así tiempos de inactividad de capacidad.

Para establecer peticiones y límites en un contenedor, te puedes utilizar la siguiente especificación del contenedor como referencia:

    containers:
- name: darwin
    image: CentOS
    resources:
        requests:
            memory: “256Mi”
            cpu: “300m”
        limits:
            memory: “1024Mi”
            cpu: “900m”

La especificación anterior asigna esencialmente a las solicitudes de recursos 256 MiB de memoria y 300 mCPU, limitando un máximo de 900 mCPU y 1024 MiB al contenedor Darwin .

5. Utilizar ReadinessProbe y livenessProbe

Aprovecha las sondas de comprobación Kubernetes para evitar proactivamente fallos en los pods:

  • Con readinessProbe para aplicaciones de producción, Kubernetes comprueba si la aplicación está lista para Comienza a servir tráfico antes de permitir tráfico a un pod. Esto indica esencialmente si un pod está disponible para aceptar tráfico y responder a solicitudes.
  • Mediante un livenessProbe, Kubernetes realiza una comprobación de salud para asegurarse de que la aplicación está respondiendo y funcionando según lo previsto. En caso de que el livenessProbe falle, la política predeterminada de kubelet reinicia el contenedor para que se vuelva a activar.

6. Desplegar RBAC para seguridad

Los controles de acceso basados en roles (RBAC) ayudan a administrar políticas de acceso para Define quién puede hacer qué en el clúster Kubernetes. Para establecer permisos RBAC en los recursos de Kubernetes, Kubernetes proporciona estos parámetros:

  • Rol de un recurso con espacio de nombres
  • ClusterRole para un recurso sin namespaced

Aquí están un ejemplo donde ClusterRole se está utilizado para administrar el acceso de lectura a servicios en todos los espacios de nombres:

    apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: reader
rules:
- apiGroups: [""]
 resources: ["services"]
 verbs: ["get","watch","list"]

Además, Kubernetes también permite RoleBinding y ClusterRoleBinding referenciando roles ya administrados en una cuenta de usuario, grupo o servicio. Más detalles sobre las políticas RBAC de Kubernetes se pueden encontrar aquí.

7. Autoescalado

Se están recomendado encarecidamente que te aprovechen los beneficios de los mecanismos de escalado automático de Kubernetes para escalar automáticamente los servicios de clúster con un aumento en el consumo de recursos.

Con el Horizontal Pod Autoscaler y el Cluster Autoscaler, los volúmenes de nodos y pods se Obtén dinámicamente en tiempo real, manteniendo así la carga al nivel óptimo y evitando inactividades.

8. Supervisa los componentes del plano de control

No Haz este error común: olvidar supervisar el cerebro del clúster Kubernetes—el plano de control. El plano de control incluye:

  • el Servicio API de Kubernetes
  • kubelet
  • Controlador-gestor
  • etcd
  • kube-proxy
  • kube-dns

Monitorizar el plano de control ayuda a identificar problemas o amenazas dentro del clúster y aumentar su latencia. También se está recomendable utilizar herramientas automatizadas de monitorización (Dynatrace, Datadog, Sysdig, etc.) en lugar de gestionar manualmente las alertas.

Vigilar los componentes del plano de control de tu Kubernetes supervisa esencialmente la carga de trabajo y el consumo de recursos para ayudar a mitigar problemas en la salud de tu clúster.

9. Adoptar un flujo de trabajo basado en Git

Utiliza GitOps, un flujo de trabajo basado en Git, como modelo preferido para utilizar Git como la única fuente de verdad para toda automatización, incluidas las canalizaciones CI/CD. Adoptar un marco de GitOps ayuda a mejorar la productividad mediante:

  • Reducción de tiempos de despliegue
  • Mejora de la trazabilidad de errores
  • Automatización de flujos de trabajo CI/CD

Aprovechar GitOps en un clúster Kubernetes ayuda a te Lograr gestión unificada del clúster y a acelerar el desarrollo de aplicaciones.

10. Vigilar el uso elevado de disco

El alto uso de disco están un problema común que afecta al rendimiento del clúster. Como práctica habitual, te debería supervisa:

  • El sistema de archivos raíz
  • Todos los volúmenes de disco asociados al clúster

Con frecuencia, tú también te encontrarás con alertas de alta utilización de disco por razones Unknown; estos casos suelen Obtén difíciles de solucionar debido a la naturaleza poco común de la causa raíz. Mantener la monitorización de alertas ayuda a tomar medidas correctivas, ya sea escalando o liberando espacio en disco en el momento adecuado.

11. Auditar regularmente los registros de políticas

Subestimada como mejor práctica, todos los registros almacenados en /var/log/audit.log deben ser auditados regularmente para:

  • Identificar amenazas
  • Supervisa el consumo de recursos
  • Captura los latidos clave del corazón del clúster Kubernetes

Las políticas predeterminadas del clúster Kubernetes son definidas en el  archivo /etc/kubernetes/audit-policy.yaml y pueden personalizarse según requisitos específicos. Además, también te podría utiliza Fluentd como una herramienta de código abierto para mantener una capa centralizada de registro para tus contenedores.

Enfoque personalizado para K8s

Si ya te son usando Kubernetes o son preparándote para producción, un enfoque personalizado para configurar tu clúster ayuda mucho. Estas mejores prácticas han sido sugeridas repetidamente por profesionales que ya han pasado por el dolor de aprender por las malas.

También te puedes dar cuenta de algunas prácticas que se adaptan a tu arquitectura de clúster, ya que cada construcción de aplicación requeriría un enfoque completamente diferente para afinar la eficiencia. La clave del éxito dependería, pase lo que pase, de lo optimizado que esté tu framework contenedor.

Recursos adicionales

Para lecturas relacionadas, explora estos artículos:

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.