Comparación de nodos virtuales con nodos gestionados
Descubra las diferencias entre los nodos virtuales y los nodos gestionados que puede crear mediante Container Engine for Kubernetes (OKE).
Al crear un pool de nodos con Container Engine for Kubernetes, especifique el tipo de nodos de trabajador que se va a crear en el pool de nodos como uno u otro de los siguientes:
- Nodos virtuales: Oracle gestiona completamente los nodos virtuales. Consulte Nodos virtuales y pools de nodos virtuales.
- Nodos gestionados: los nodos gestionados se ejecutan en las instancias de Compute (tanto con hardware dedicado como en máquina virtual) de su arrendamiento y, al menos, los gestiona en parte. Consulte Nodos gestionados y pools de nodos gestionados.
Solo puede crear nodos virtuales en clusters mejorados. Puede crear nodos gestionados tanto en clusters básicos como en clusters mejorados.
Todas las referencias a 'nodos' y 'nodos de trabajador' en la documentación de Container Engine for Kubernetes hacen referencia a nodos virtuales y nodos gestionados, a menos que se indique explícitamente lo contrario.
Nodos virtuales y pools de nodos virtuales
Los nodos virtuales se ejecutan en el arrendamiento de Container Engine for Kubernetes. Puede crear nodos virtuales mediante la creación de un pool de nodos virtuales. Oracle gestiona completamente los nodos virtuales y los pools de nodos virtuales.
Los nodos virtuales proporcionan una experiencia de Kubernetes "sin servidor", lo que le permite ejecutar aplicaciones en contenedores a escala sin la sobrecarga operativa que supone actualizar la infraestructura del plano de datos y gestionar la capacidad de los clusters.
Solo puede crear nodos virtuales y pools de nodos en clusters mejorados.
Funciones notables soportadas de forma diferente por los nodos virtuales
Algunas funciones se soportan de forma diferente cuando se utilizan nodos virtuales en lugar de nodos gestionados:
-
Asignación de recursos: la asignación de recursos está en el nivel del pod, en lugar de en el nivel del nodo de trabajador. Por lo tanto, debe especificar los requisitos de recursos de CPU y memoria (como solicitudes y límites) en la especificación de pod, en lugar de los nodos de trabajador de un pool de nodos. Consulte Recursos asignados a pods aprovisionados por nodos virtuales.
- Equilibrio de carga: el equilibrio de carga se encuentra entre pods, en lugar de entre nodos de trabajador (como es el caso de los nodos gestionados). En los clusters con nodos virtuales, la gestión de listas de seguridad del equilibrador de carga nunca está activada y siempre se tienen que configurar manualmente las reglas de seguridad. Los equilibrios de carga distribuyen el tráfico entre las direcciones IP de los pods y un puerto de nodo asignado. Al conectarse a pods que se ejecutan en nodos virtuales, utilice la sintaxis
<pod-ip>:<nodeport>
, en lugar de<node-ip>:<nodeport>
. Si utiliza diferentes subredes para pods y nodos, configure la entrada de puerto de nodo en la subred de pod. - Red de pod: solo se admiten las redes de pod nativos de VCN (no se admite el plugin CNI de canal). Además, el soporte es ligeramente diferente cuando se utilizan nodos virtuales:
- Solo hay una VNIC conectada a cada nodo virtual.
- Las direcciones IP no se asignan previamente antes de crear los pods.
- El plugin CNI de red de pod nativo de VCN no se muestra como en ejecución en el espacio de nombres kube-system.
- Dado que solo están soportadas las redes de pod nativos de VCN, la tabla de rutas de subred de pod debe tener reglas de ruta definidas para un gateway de NAT (no un gateway de Internet) y un gateway de servicio.
- Escala automática: los nodos virtuales se escalan automáticamente para soportar 500 pods. Dado que Oracle gestiona los recursos subyacentes para los nodos virtuales, es más fácil trabajar con la escala automática de pod horizontal de Kubernetes. No es necesario utilizar la escala automática del cluster de Kubernetes (que aún no está soportada con nodos virtuales en ningún caso). La escala automática de pod vertical de Kubernetes no está soportada con nodos virtuales.
Funciones y capacidades notables de Kubernetes no soportadas al utilizar nodos virtuales
Algunas funciones y capacidades de Kubernetes no están soportadas o aún no están disponibles cuando se utilizan nodos virtuales en lugar de nodos gestionados.
Funciones de Kubernetes no soportadas | Información adicional |
---|---|
Flannel y otros complementos CNI de terceros no son compatibles. | Los nodos virtuales solo soportan el plugin de CNI de red de pods nativos de VCN de OCI. |
Los conjuntos de daemons de Kubernetes no están soportados. |
Por ejemplo, no se admite lo siguiente:
|
No se admiten las reclamaciones de volumen persistentes (PVC). | Sin información adicional. |
Los proveedores de red que admiten recursos NetworkPolicy junto con el plugin CNI utilizado en el cluster (como Calico y Cilium) no son compatibles. | Sin información adicional. |
Las políticas de red (recurso NetworkPolicy de Kubernetes) no están soportadas. | Sin información adicional. |
Los productos de malla de servicios no están soportados. | No están soportados productos como Oracle Cloud Infrastructure Service Mesh e Istio Service Mesh. |
Están soportados los sondeos de disponibilidad y actividad de tipo HTTP . Los sondeos HTTPS, gRPC y exec no se admiten. Los sondeos de inicio no se admiten. probe.terminationGracePeriodSeconds no está soportado. |
Por ejemplo, se admite lo siguiente: Sin embargo, lo siguiente no se admite:
|
El comando El comando |
Por ejemplo, no se admite lo siguiente:
|
No se admiten contenedores efímeros. | Sin información adicional. |
No se admiten contenedores de inicialización. | Sin información adicional. |
Están soportados los siguientes tipos de volúmenes:
Los siguientes tipos de volúmenes no están soportados:
|
Por ejemplo, no se admite lo siguiente:
|
Actualmente se puede definir un máximo de 1 volumen de tipo emptyDir en la especificación de pod. | Sin información adicional. |
Los siguientes campos de pod no están soportados:
|
Por ejemplo, no se admite lo siguiente:
|
Los siguientes contextos de seguridad de pod están soportados:
Los siguientes contextos de seguridad de pod no están soportados:
|
Por ejemplo, no se admite lo siguiente:
|
Se admiten los siguientes contextos de seguridad de contenedor:
Los siguientes contextos de seguridad de contenedor no están soportados:
|
Por ejemplo, no se admite lo siguiente:
|
Container.Port
|
Por ejemplo, no se admite lo siguiente:
|
Contenedor
|
Tenga en cuenta que Kubernetes agrega TerminationMessagePolicy y TerminationMessagePath por defecto. |
El rango de puertos de contenedor (1, 65535) no puede entrar en conflicto con el rango NodePort (30000-32767). | Por ejemplo, no se admite lo siguiente:
|
Pod.Volumes.EmptyDirVolumeOrigen:Límite de tamaño | Por ejemplo, no se admite lo siguiente:
|
Pod.Volumes.EmptyDirVolumeSource:Medium - solo puede ser "" o "Memoria" | Por ejemplo, no se admite lo siguiente:
|
Pod:Volumes - El modo se debe especificar como 0644 para lo siguiente:
|
Por ejemplo, no se admite lo siguiente:
|
Pod:Volumes: si se especifica DefaultMode para lo siguiente, DefaultMode debe ser 0644:
|
Por ejemplo, no se admite lo siguiente:
|
Resources.Requests no puede ser diferente de Resources.Limits | Por ejemplo, no se admite lo siguiente:
|
Volúmenes:DownwardAPI:ResourceFieldRef | Por ejemplo, no se admite lo siguiente:
|
TerminationGracePeriodSeconds | Por ejemplo, no se admite lo siguiente:
|
DeletionGracePeriodSeconds | Por ejemplo, no se admite lo siguiente:
|
Contenedor de ejecución | Por ejemplo, no se admite lo siguiente:
|
Comando port-forward de Kubectl | Utilice kubectl proxy en su lugar (consulte Solución de problemas de pod y servicio en nodos virtuales mediante proxy de kubectl en lugar de kubectl port-forward). |
Solicitudes UpdatePod con mutaciones en pod.spec.containers[].image | Sin información adicional. |
Propagación a pods de actualizaciones a configmaps y secretos montados | Sin información adicional. |
Métricas de nivel de contenedor en punto final de métricas de kubelet virtual | Sin información adicional. |
Contenedor:Subnúcleo de ResourceRequirements | Sin información adicional. |
Contenedor stdin/stdinOnce, tty | Sin información adicional. |
Conservar direcciones IP de cliente cuando externalTrafficPolicy: local | Sin información adicional. |
Tipos ImagePullSecret distintos de config y configJson | Sin información adicional. |
ProjectedVolumeSource:ServiceAccountTokenProjection:ExpirationSeconds | Sin información adicional. |
El comando kubectl attach para interactuar con un proceso que ya se está ejecutando dentro de un contenedor existente. |
Sin información adicional. |
Funciones y capacidades notables de Container Engine for Kubernetes no soportadas al utilizar nodos virtuales
Algunas funciones y capacidades de Container Engine for Kubernetes no están disponibles, o aún no lo están, al utilizar nodos virtuales en lugar de nodos gestionados.
Las funciones de Container Engine for Kubernetes no están soportadas | Información adicional |
---|---|
Conexiones SSH a nodos de trabajador (incluso a través de un bastión) | No disponible. |
Uso de scripts personalizados de cloud-init | No disponible. |
Script de Node Doctor | No disponible. |
Soporte para versiones de Kubernetes anteriores a la versión 1.25 | Los nodos virtuales requieren que el cluster ejecute al menos la versión 1.25 de Kubernetes. |
Clusters mixtos que contienen nodos virtuales y nodos gestionados. | Aún no está disponible. |
Escala automática del número de nodos virtuales. | Aún no está disponible. |
Reservas de capacidad para aprovisionar nodos virtuales. | Aún no está disponible. |
Pods con unidades Intel y GPU. | Aún no está disponible. |
Rotación de credenciales, como se describe en Rotación de credenciales de cluster | Aún no está disponible. |
Despliegues comunes no soportados y soportados de forma diferente al utilizar nodos virtuales
Los siguientes despliegues comunes no están soportados cuando se utilizan nodos virtuales en lugar de nodos gestionados, o están soportados de forma diferente:
Despliegue | Notas: |
---|---|
kube-proxy en el espacio de nombres kube-system y el complemento de cluster kube-proxy | kube-proxy se ejecuta en pods programados en nodos virtuales, pero no se despliega en el espacio de nombres kube-system. |
Panel de control de Kubernetes | No se admite cuando se utilizan nodos virtuales. |
Controlador de entrada de Nginx | Despliegue de forma diferente al utilizar nodos virtuales (consulte Configuración del controlador de entrada de ejemplo). |
Escala automática del cluster de Kubernetes | No se admite cuando se utilizan nodos virtuales. |
Escala automática de pod vertical | No se admite cuando se utilizan nodos virtuales. |
Servidor de métricas de Kubernetes | Despliegue de forma diferente al utilizar nodos virtuales (consulte Despliegue del servidor de métricas de Kubernetes en un cluster). |
Nodos gestionados y pools de nodos gestionados
Los nodos gestionados se ejecutan en las instancias de Compute (tanto con hardware dedicado como en máquina virtual) de su arrendamiento. Puede crear nodos gestionados mediante la creación de un pool de nodos gestionados. Los nodos gestionados y los pools de nodos gestionados son gestionados por usted.
Como responsable de gestionar los nodos gestionados, tiene la posibilidad de configurarlos para cumplir sus requisitos específicos. Usted se encargará de cambiar la versión de Kubernetes en nodos gestionados y de gestionar la capacidad del cluster.
Al utilizar nodos gestionados, paga por las instancias de Compute que ejecutan aplicaciones.
Puede crear nodos gestionados y pools de nodos tanto en clusters básicos como en clusters mejorados.
Funciones notables soportadas de forma diferente por los nodos gestionados
Algunas funciones se soportan de forma diferente cuando se utilizan nodos gestionados en lugar de nodos virtuales:
- Asignación de recursos: la asignación de recursos está en el nivel del nodo de trabajador, en lugar de en el nivel del pod. Por lo tanto, debe especificar los requisitos de recursos de CPU y memoria para los nodos de trabajador en un pool de nodos, en lugar de en la especificación de pod.
- Equilibrio de carga: el equilibrio de carga se encuentra entre nodos de trabajador, en lugar de entre pods (como es el caso de los nodos virtuales). Por lo tanto, no puede utilizar puertas de preparación de pod para enrutar el tráfico a juegos de backends de equilibrador de carga en clusters con nodos gestionados.
- Red de pod: se admiten tanto el plugin CNI de red de pod nativo de VCN como el plugin CNI de canal.
- Escala automática: está soportado el uso de la escala automática del cluster de Kubernetes y la escala automática de pod vertical.
Funciones notables no soportadas o aún no disponibles al utilizar nodos gestionados
- Marcados de Kubernetes