Asigne una ENI exclusiva a cada pod para obtener un alto throughput, una latencia ultrabaja y compatibilidad con multicast.
Limitaciones
Las instancias ECS requieren Terway v1.11.0 o posterior; las instancias Lingjun requieren la versión v1.14.3 o posterior. Consulte Terway para actualizar.
Con el doble stack habilitado, la adición de nodos sigue las mismas restricciones de tipo de instancia que el modo de ENI compartida: la cantidad de direcciones IPv4 (primarias y secundarias) debe ser igual a la de direcciones IPv6. Consulte instance family para ver las cantidades compatibles.
Las instancias Lingjun no admiten doble stack.
Los pods con una ENI exclusiva asignada no admiten la aceleración de red eBPF ni Kubernetes NetworkPolicy.
El modo de ENI exclusiva requiere nodos nuevos. Los nodos existentes agregados al pool no usarán sus ENI conectadas.
El modo de ENI exclusiva solo aplica a nodos nuevos. No es posible alternar entre los modos de ENI compartida y exclusiva después de crear el node pool.
No puede configure a custom CNI chain.
Configure la red de contenedores en el node pool
Terway ofrece la ENI exclusiva como modo de red en el node pool. Consulte Shared ENI mode and exclusive ENI mode.
1. Planificar el node pool de ENI exclusiva
En el modo de ENI exclusiva, cada nodo admite menos pods y requiere más de seis ENI. Consulte instance family para conocer la cantidad de ENI por tipo de instancia.
Planifique los vSwitches y security groups para sus pods.
Terway admite los siguientes métodos de configuración, ordenados por prioridad descendente:
Configure a fixed IP address, an independent virtual switch, and a security group for a pod
-
Configuración predeterminada del clúster: Customize Terway configuration parameters
ImportanteIncluya vSwitches para la zona de cada nodo. De lo contrario, fallará la creación de pods.
Los node pools de Lingjun no admiten configuring a fixed IP address, an independent vSwitch, and a security group for a pod.
2. Cree un node pool de ENI exclusiva y compruebe la configuración
-
Siga Create and manage node pools para crear un node pool y agregue la etiqueta
k8s.aliyun.com/exclusive-mode-eni-type: eniOnlya los nodos.Agregue también un taint para evitar que se programen en este pool los pods que no requieran una ENI exclusiva.
ImportanteAgregue la etiqueta durante la creación del node pool. Los nodos existentes no pueden cambiar al modo de ENI exclusiva. Si la etiqueta es incorrecta, elimine y vuelva a crear el node pool.
-
Consulte los recursos asignables en un nodo para comprobar que el modo de ENI exclusiva está habilitado:
kubectl describe node <node-name>Salida esperada:
Capacity: aliyun/eni: 7 cpu: 16 ephemeral-storage: 123460788Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 31555380Ki pods: 213 Allocatable: aliyun/eni: 7 cpu: 15890m ephemeral-storage: 113781462033 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 28587828Ki pods: 213El campo
aliyun/eniconfirma que el modo de ENI exclusiva está habilitado.
3. Programar pods en el node pool de ENI exclusiva
Use NodeAffinity o un recurso personalizado PodNetworking para programar pods en el node pool de ENI exclusiva.
NodeAffinity: No admite configuraciones a nivel de pod, como IP fija, vSwitch independiente o security group.
-
PodNetworking: Admite configuraciones de vSwitch, security group e IP fija a nivel de pod. Consulte Configure a fixed IP address, an independent virtual switch, and a security group for a pod.
Establezca
eniTypecomoENIen el campoeniOptionspara programar pods en el node pool de ENI exclusiva. Ejemplo:apiVersion: network.alibabacloud.com/v1beta1 kind: PodNetworking metadata: name: enionly spec: eniOptions: eniType: ENI allocationType: type: Elastic selector: podSelector: matchLabels: network: enionly
Preguntas frecuentes
Verificación de la ENI exclusiva de un pod
Terway crea automáticamente un recurso PodENI con el mismo nombre y namespace que el pod para registrar su configuración de red.
Consulte el recurso:
kubectl get podeni nginx-9d557694f-rcdzs -oyaml
Salida esperada:
apiVersion: network.alibabacloud.com/v1beta1
kind: PodENI
metadata:
annotations:
k8s.aliyun.com/pod-uid: 05590939-fc51-47ab-a204-3dd187233bca
creationTimestamp: "2024-09-13T08:09:27Z"
finalizers:
- pod-eni
generation: 1
labels:
k8s.aliyun.com/node: cn-hangzhou.172.XX.XX.25
name: example-9d557694f-rcdzs
namespace: default
resourceVersion: "1131123"
spec:
allocations:
- allocationType:
type: Elastic
eni:
attachmentOptions: {}
id: eni-xxxx
mac: 00:16:3e:37:xx:xx
securityGroupIDs:
- sg-xxxx
vSwitchID: vsw-xxxx
zone: cn-hangzhou-j
ipv4: 172.16.0.30
ipv4CIDR: 172.16.0.0/24
ipv6: 2408:4005:xxxx:xxxx:xxxx:xxxx:xxxx:9ad4
ipv6CIDR: 2408:4005:39c:xxxx::/64
zone: cn-hangzhou-j
status:
eniInfos:
eni-xxxx:
id: eni-xxxx
status: Bind
type: Secondary
instanceID: i-xxxx
phase: Bind