En Kubernetes, los pods recién creados y no programados se programa automáticamente en nodos que cumplen sus requisitos. Al utilizar la afinidad, marcas y tolerancias de nodo, puede tener más control sobre los nodos en los que se han programado pods. En ArcGIS Enterprise on Kubernetes, puede gestionar la ubicación de pods de servicio SIG recién creados desde ArcGIS Enterprise Manager.
La afinidad de nodos permite especificar reglas que limitación la ejecución de los pods a determinados nodos etiquetados. Las marcas se aplican a los nodos para rechazar pods, mientras que las tolerancias se aplican a los pods con el fin de tolerar marcas. Para obtener más información, consulte la documentación de Kubernetes.
La combinación de afinidad, marcas y tolerancias de nodos ayuda a lograr un control exhaustivo de la colocación de la carga de trabajo para mejorar el aislamiento, optimizar la asignación de recursos y cumplir satisfactoriamente los requisitos incluidos en el clúster de Kubernetes:
- Aislar cargas de trabajo con requisitos especializados: utilice reglas de afinidad de nodos y etiquetas para garantizar que ciertos pods se programen en nodos específicos. Utilice marcas para señalar nodos con características especiales, como grandes requisitos de memoria o CPU, como específicos de cargas de trabajo de ArcGIS. A continuación, aplique tolerancias a los pods de servicio para garantizar que se programen en nodos con los recursos necesarios.
- Optimizar la asignación de recursos: aplique marcas a nodos con recursos limitados para evitar la sobrecarga de los recursos y defina tolerancia en pods de servicio para ajustarse a las restricciones de recursos de estos nodos. Combine la afinidad con marcas y tolerancias para garantizar que los pods de servicios solo se programen en nodos que puedan satisfacer los requisitos en cuanto a recursos.
- Programación basada en geolocalización: para aplicaciones que requieren la localidad o adherencia de los datos a reglamentaciones específicas, utilice la afinidad de nodos para programar pods de servicio basados en la ubicación geográfica de los nodos. Marque los nodos basándose en normas de ubicación física o soberanía de datos y aplique tolerancias en los pods de servicio para garantizar que se programen en nodos y cumplan las restricciones de ubicación necesarias.
El ajuste automático a escala mejora el uso de la afinidad y las tolerancias de nodos al ajustar dinámicamente el número de pods en función de las demandas de carga de trabajo. Este ajuste a escala dinámico asegura que los pods se programen de forma eficaz en nodos que cumplan determinados requisitos o tengan disponibles los recursos necesarios, lo que optimiza la asignación de recursos. Al combinar el ajuste a escala automático con la afinidad y las tolerancias de nodos, los clústeres de Kubernetes pueden ofrecer una optimización de recursos, un rendimiento y una escalabilidad mejores, adaptando las fluctuaciones de la carga de trabajo al tiempo que se respetan las preferencias y las restricciones de nodos. Para obtener más información sobre el ajuste a escala automático, consulte Escala de servicio.
Escenarios
Para entender mejor cómo puede beneficiar la colocación de pods en servicios a su organización, revise los siguientes escenarios.
Escenario 1: aumento del tráfico estacional para servicios públicos de representación cartográfica
Un organismo público experimenta un aumento importante del tráfico durante un festival local. Los usuarios que acceden al mapa web en busca de información de los eventos están experimentando retrasos a causa de la gran demanda en el servicio de mapas subyacente. Para solucionarlo, el administrador de la organización realiza lo siguiente:
- Configura nodos con grandes recursos de memoria y CPU con el par de clave-valor alto rendimiento: verdadero.
- Marca nodos de alto rendimiento con workload=high-performance:NoSchedule.
- Aplica reglas de afinidad de nodos para garantizar que los pods del servicio de mapas se programen en nodos con grandes recursos de memoria y CPU:
- Tipo: preferido
- Clave: alto rendimiento
- Operador: existe
- Valor: verdadero
- Aplica tolerancias para permitir que los pods se ejecuten en nodos marcados para cargas de trabajo de alto rendimiento, lo que asegura que el servicio de mapas pueda gestionar el aumento de tráfico:
- Efecto: ninguna programación
- Clave: carga de trabajo
- Operador: igual
- Valor: alto rendimiento
Escenario 2: procesamiento de datos para la monitorización ambiental
Una agencia medioambiental está ejecutando una serie de análisis geoespaciales para monitorizar cambios en el uso del suelo. El análisis requiere importantes recursos informáticos y la agencia tiene nodos específicos con GPU para este fin. Para garantizar que el análisis geoespacial se ejecute de manera eficaz sin competir con otros servicios por los recursos, el administrador de la organización:
- Configura nodos habilitados con GPU con el par de valor-clave gpu: verdadero.
- Marca los nodos de GPU con workload=high-resource:NoSchedule para evitar que ahí se programen menos pods que consuman muchos recursos.
- Aplica reglas de afinidad de nodos para programar los pods de análisis en nodos de GPU:
- Tipo: obligatorio
- Clave: gpu
- Operador: en
- Valor: verdadero
- Aplica tolerancias para permitir que los pods se ejecuten en nodos de GPU marcados:
- Efecto: ninguna programación
- Clave: carga de trabajo
- Operador: igual
- Valor: muchos recursos
Escenario 3: optimización de recursos de servicios de entidades compartidos
El departamento de SIG de una ciudad tiene varios servicios de entidades que no se utilizan mucho, pero que, en conjunto, suponen una carga para una única implementación de servicio. Para permitir que el departamento mantenga la disponibilidad del servicio sin sobrecargar el sistema, el administrador de la organización:
- Configura nodos con la clave recursos limitados.
- Marca los nodos con recursos limitados con resource-constrained:PreferNoSchedule.
- Aplica reglas de afinidad de nodos para priorizar la programación en nodos con menos disponibilidad de recursos:
- Tipo: preferido
- Clave: recursos limitados
- Operador: no existe
- Aplica tolerancia a pods de servicio de entidades para garantizar que puedan programarse en nodos marcados a pesar de las restricciones:
- Efecto: sin programación preferido
- Clave: recursos limitados
- Operador: existe
Gestionar la ubicación de pods
Antes de gestionar la colocación de pods, configure grupos de nodos agregando las etiquetas que utilizar para definir la afinidad de nodos y las marcas para las que establecerá tolerancias.
Nota:
En la mayoría de los entornos, puede agrupar las cargas de trabajo con grupos de nodos. Se recomienda aplicar etiquetas y marcas a grupos de nodos en lugar de a nodos individuales de este flujo de trabajo.
Para definir las reglas de afinidad de nodos y las tolerancias de los pods del servicio SIG recién creados, realice los pasos siguientes:
- Inicie sesión en ArcGIS Enterprise Manager como administrador.
- Haga clic en el botón Servicios de la barra lateral.
- Seleccione el servicio SIG que desee gestionar y haga clic en la pestaña Ubicación de pod.
- Para agregar una regla de afinidad de nodos a pods, proporcione la siguiente información en la sección Afinidad de nodos y haga clic en Agregar:
- Tipo: tipo de afinidad de nodos. Los tipos disponibles son los siguientes:
- Preferido (PreferredDuringSchedulingIgnoredDuringExecution): el pod prefiere programarse en un nodo que cumple la regla.
- Obligatorio (RequiredDuringSchedulingIgnoredDuringExecution): el pod debe programarse en un nodo que cumple la regla.
- Clave: clave de la etiqueta o anotación de nodo que debe cumplir la regla.
- Operador: operador de la regla. Los operadores disponibles son los siguientes:
- En: la etiqueta de nodo o anotación debe estar en la lista de valores especificados.
- No en: la etiqueta de nodo o anotación no debe estar en la lista de valores especificados.
- Existe: el nodo debe tener la etiqueta o anotación especificada.
- No existe: el nodo no debe tener la etiqueta o anotación especificada.
- Valor: lista de valores para contrastar con la etiqueta o anotación del nodo.
- Tipo: tipo de afinidad de nodos. Los tipos disponibles son los siguientes:
- Para agregar tolerancias a nodos, proporcione la información siguiente en la sección Tolerancias y haga clic en Agregar:
- Efecto: efecto de marca con la que debe coincidir la tolerancia. Los efectos disponibles son los siguientes:
- Ninguna programación: los pods nuevos no se programan en el nodo marcado sin una tolerancia coincidente.
- Preferir sin programación: los pods nuevos intentan evitar programarse en el nodo marcado sin una tolerancia coincidente, pero no se garantiza.
- Clave: clave de la marca con la que debería coincidir la tolerancia.
- Operador: operador que se va a utilizar para la tolerancia. Los operadores disponibles son los siguientes:
- Igual: el pod tolera una marca con la clave y el valor especificados.
- Existe: el pod tolera cualquier marca con la clave especificada.
- Valor: valor de la marca con la que debería coincidir la tolerancia si la operación se define como igual.
- Efecto: efecto de marca con la que debe coincidir la tolerancia. Los efectos disponibles son los siguientes:
- Haga clic en Guardar.
Para editar las reglas de afinidad de nodos y las tolerancias, haga clic en el botón Editar situado junto a cada lista. Para eliminarlas, haga clic en el botón Eliminar .
Nota:
Los pods que ya se ejecutan en nodos no se expulsarán si se realiza un cambio y la regla o tolerancia dejan de cumplirse.