Configurez le Amazon VPC CNI plugin for Kubernetes pour les groupes de sécurité pour Amazon EKS Pods - Amazon EKS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurez le Amazon VPC CNI plugin for Kubernetes pour les groupes de sécurité pour Amazon EKS Pods

Si vous utilisez Pods avec EC2 les instances Amazon, vous devez configurer Amazon VPC CNI plugin for Kubernetes pour les groupes de sécurité

Si vous utilisez Fargate Pods uniquement, et vous n'avez aucun EC2 nœud Amazon dans votre cluster, voirUtiliser une politique de groupe de sécurité pour un Amazon EKS Pod.

  1. Vérifiez votre compte actuel Amazon VPC CNI plugin for Kubernetes version avec la commande suivante :

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    L'exemple qui suit illustre un résultat.

    v1.7.6

    Si vos recettes Amazon VPC CNI plugin for Kubernetes la version est antérieure à1.7.7, puis mettez à jour le plugin vers la version 1.7.7 ou ultérieure. Pour plus d’informations, consultez Amazon VPC CNI.

  2. Ajoutez la IAM politique gérée A mazonEKSVPCResource Controller au rôle de cluster associé à votre EKS cluster Amazon. La politique permet au rôle de gérer les interfaces réseau, leurs adresses IP privées, leur attachement et leur détachement vers et depuis les instances réseau.

    1. Récupérez le nom de votre IAM rôle de cluster et stockez-le dans une variable. Remplacez my-cluster avec le nom de votre cluster.

      cluster_role=$(aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2)
    2. Attachez la stratégie au rôle.

      aws iam attach-role-policy --policy-arn arn:aws: iam::aws:policy/AmazonEKSVPCResourceController --role-name $cluster_role
  3. Activez le VPC CNI module complémentaire Amazon pour gérer les interfaces réseau pour Pods en définissant la ENABLE_POD_ENI variable true sur dans aws-node DaemonSet. Une fois ce paramètre défini surtrue, le module complémentaire crée une ressource cninode personnalisée pour chaque nœud du cluster. Le contrôleur de VPC ressources crée et attache une interface réseau spéciale appelée interface réseau de liaison avec la descriptionaws-k8s-trunk-eni.

    kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=true
    Note

    L'interface réseau de tronc est incluse dans le nombre maximal d'interfaces réseau prises en charge par le type d'instance. Pour obtenir la liste du nombre maximal d'interfaces réseau prises en charge par chaque type d'instance, consultez la section Adresses IP par interface réseau et par type d'instance dans le guide de EC2 l'utilisateur Amazon. Si le nombre maximal d'interfaces réseau standard associées à votre nœud est déjà atteint, le contrôleur de VPC ressources réserve un espace. Vous devrez réduire votre course Pods suffisamment pour que le contrôleur puisse détacher et supprimer une interface réseau standard, créer l'interface réseau principale et l'associer à l'instance.

  4. Vous pouvez voir quels nœuds ont une ressource personnalisée CNINode avec la commande suivante. Si le message No resources found est renvoyé, attendez plusieurs secondes et réessayez. L'étape précédente nécessite le redémarrage du Amazon VPC CNI plugin for Kubernetes Pods`, qui prend plusieurs secondes.

    $ kubectl get cninode -A NAME FEATURES ip-192-168-64-141.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}] ip-192-168-7-203.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}]

    Si vous utilisez des VPC CNI versions antérieures à1.15, les étiquettes des nœuds ont été utilisées à la place de la ressource CNINode personnalisée. Vous pouvez voir quels nœuds ont l'étiquette de nœud aws-k8s-trunk-eni définie sur la valeur à l'trueaide de la commande suivante. Si le message No resources found est renvoyé, attendez plusieurs secondes et réessayez. L'étape précédente nécessite le redémarrage du Amazon VPC CNI plugin for Kubernetes Pods, ce qui prend plusieurs secondes.

    kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=true -

    Une fois l'interface réseau de liaison créée, Pods se voient attribuer des adresses IP secondaires à partir du réseau principal ou des interfaces réseau standard. L'interface de tronc est automatiquement supprimée si le nœud est supprimé.

    Lorsque vous déployez un groupe de sécurité pour Pod dans une étape ultérieure, le contrôleur de VPC ressources crée une interface réseau spéciale appelée interface réseau de succursale avec une description aws-k8s-branch-eni et y associe les groupes de sécurité. Les interfaces réseau de branche sont créées en plus des interfaces réseau standard et de tronc attachées au nœud.

    Si vous utilisez des sondes Liveness ou Readiness, vous devez également désactiver le démultiplexage TCP anticipé, afin de pouvoir se connecter à kubelet Pods sur les interfaces réseau des succursales à l'aide deTCP. Pour désactiver le démultiplexage TCP anticipé, exécutez la commande suivante :

    kubectl patch daemonset aws-node -n kube-system \ -p '{"spec": {"template": {"spec": {"initContainers": [{"env":[{"name":"DISABLE_TCP_EARLY_DEMUX","value":"true"}],"name":"aws-vpc-cni-init"}]}}}}'
    Note

    Si vous utilisez 1.11.0 ou une version ultérieure du Amazon VPC CNI plugin for Kubernetes add-on et set POD_SECURITY_GROUP_ENFORCING_MODE =standard, comme décrit à l'étape suivante, vous n'avez donc pas besoin d'exécuter la commande précédente.

  5. Si votre cluster utiliseNodeLocal DNSCache, ou si vous souhaitez utiliser Calico politique réseau avec votre Pods qui ont leurs propres groupes de sécurité, ou vous avez Kubernetes services de type NodePort et LoadBalancer utilisant des cibles d'instance dont le paramètre est externalTrafficPolicy défini sur Local pour Pods auquel vous souhaitez attribuer des groupes de sécurité, vous devez alors utiliser la version 1.11.0 ou une version ultérieure du Amazon VPC CNI plugin for Kubernetes module complémentaire, et vous devez activer le paramètre suivant :

    kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standard

    IMPORTANT: Pod les règles des groupes de sécurité ne sont pas appliquées au trafic entre Pods ou entre Pods and services, tels que kubelet ounodeLocalDNS, qui se trouvent sur le même nœud. Les pods utilisant différents groupes de sécurité sur le même nœud ne peuvent pas communiquer car ils sont configurés dans différents sous-réseaux et le routage est désactivé entre ces sous-réseaux. Trafic sortant depuis Pods vers des adresses autres que l'adresse réseau VPC est traduite en adresse IP de l'interface réseau principale de l'instance (sauf si vous l'avez également définieAWS_VPC_K8S_CNI_EXTERNALSNAT=true). Pour ce trafic, les règles des groupes de sécurité de l'interface réseau principale sont utilisées, plutôt que celles du Pod’s groupes de sécurité. ** Pour que ce paramètre s'applique aux paramètres existants Pods, vous devez redémarrer le Pods ou les nœuds que Pods continuent de courir.

  6. Pour savoir comment utiliser une politique de groupe de sécurité pour votre Pod, voir Utiliser une politique de groupe de sécurité pour un Amazon EKS Pod.