Unterstützung für die Verbesserung dieser Seite beitragen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfiguration des Amazon-VPC-CNI-Plugins für Kubernetes für Sicherheitsgruppen für Amazon-EKS-Pods
Wenn Sie Pods mit Amazon-EC2-Instances verwenden, müssen Sie das Amazon-VPC-CNI-Plugin für Kubernetes für Sicherheitsgruppen konfigurieren.
Wenn Sie ausschließlich Fargate-Pods verwenden und über keine Amazon-EC2-Knoten in Ihrem Cluster verfügen, lesen Sie Sicherheitsgruppenrichtlinie für einen Amazon-EKS-Pod verwenden.
-
Überprüfen Sie die aktuelle Version Ihres Amazon-VPC-CNI-Plugins für Kubernetes mit dem folgenden Befehl:
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3Eine Beispielausgabe sieht wie folgt aus.
v1.7.6Wenn Ihre Amazon-VPC-CNI-Plugin für Kubernetes-Version älter als
1.7.7ist, aktualisieren Sie das Plugin auf Version1.7.7oder höher. Weitere Informationen finden Sie unter Pods mit dem Amazon VPC CNI zuweisen IPs . -
Fügen Sie die verwaltete IAM-Richtlinie AmazonEKSVPCResourceController
der Cluster-Rolle hinzu, die Ihrem Amazon-EKS-Cluster zugeordnet ist. Die Richtlinie ermöglicht es der Rolle, Netzwerkschnittstellen, ihre privaten IP-Adressen sowie deren An- und Abkopplung an und von Netzwerk-Instances zu verwalten. -
Rufen Sie den Namen Ihrer Cluster-IAM-Rolle ab und speichern Sie ihn in einer Variablen. Ersetzen Sie
my-clusterdurch den Namen Ihres Clusters.cluster_role=$(aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2) -
Fügen Sie der Rolle die -Richtlinie an.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController --role-name $cluster_role
-
-
Aktivieren Sie das Amazon-VPC-CNI-Add-On, um Netzwerkschnittstellen für Pods zu verwalten, indem Sie die Variable
ENABLE_POD_ENIimaws-nodeDaemonSet auftruesetzen. Wenn diese Einstellung auftruefestgelegt wurde, erstellt das Add-On für jeden Knoten im Cluster eine benutzerdefiniertecninode-Ressource. Der VPC-Ressourcen-Controller erstellt und verknüpft eine spezielle Netzwerkschnittstelle, die als Trunk-Netzwerkschnittstelle mit der Beschreibungaws-k8s-trunk-enibezeichnet wird.kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=trueAnmerkung
Die Trunk-Netzwerkschnittstelle ist in der maximalen Anzahl von Netzwerkschnittstellen enthalten, die vom Instance-Typ unterstützt werden. Eine Liste der maximalen Anzahl von Netzwerkschnittstellen, die von jedem Instance-Typ unterstützt werden, finden Sie unter IP-Adressen pro Netzwerkschnittstelle pro Instance-Typ im Amazon-EC2-Benutzerhandbuch. Wenn an Ihren Knoten bereits die maximale Anzahl an Standardnetzwerkschnittstellen angeschlossen ist, reserviert der VPC-Ressourcencontroller einen Speicherplatz. Sie müssen Ihre ausgeführten Pods so weit herunterskalieren, dass der Controller eine Standard-Netzwerkschnittstelle trennen und löschen, die Trunk-Netzwerkschnittstelle erstellen und an die Instance anhängen kann.
-
Mit dem folgenden Befehl können Sie ermitteln, welche Ihrer Knoten über eine benutzerdefinierte Ressource vom Typ
CNINodeverfügen. WennNo resources foundzurückgegeben wird, warten Sie einige Sekunden und versuchen Sie es dann erneut. Der vorherige Schritt erfordert einen Neustart des Amazon-VPC-CNI-Plugins für Kubernetes-Pods, was einige Sekunden in Anspruch nimmt.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"}]Wenn Sie VPC-CNI-Versionen verwenden, die älter als
1.15sind, wurden anstelle der benutzerdefiniertenCNINode-Ressource Knotenbezeichnungen verwendet. Mit dem folgenden Befehl können Sie ermitteln, bei welchen Ihrer Knoten die Knoten-Bezeichnungaws-k8s-trunk-eniauftruefestgelegt ist. WennNo resources foundzurückgegeben wird, warten Sie einige Sekunden und versuchen Sie es dann erneut. Der vorherige Schritt erfordert einen Neustart des Amazon-VPC-CNI-Plugins für Kubernetes-Pods, was einige Sekunden in Anspruch nimmt.kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=trueNachdem die Trunk-Netzwerkschnittstelle erstellt wurde, werden Pods sekundäre IP-Adressen von der Trunk- oder Standardnetzwerkschnittstelle zugewiesen. Die Trunk-Schnittstelle wird automatisch gelöscht, wenn der Knoten gelöscht wird.
Wenn Sie in einem späteren Schritt eine Sicherheitsgruppe für einen Pod bereitstellen, erstellt der VPC-Ressourcen-Controller eine spezielle Netzwerkschnittstelle, die als Zweigstellennetzwerkschnittstelle bezeichnet wird, mit einer Beschreibung von
aws-k8s-branch-eniund ordnet ihr die Sicherheitsgruppen zu. Neben den an den Knoten angeschlossenen Standard- und Amtsnetzschnittstellen werden Nebenstellennetzschnittstellen erstellt.Wenn Sie Aktivitäts- oder Bereitschaftsprüfungen verwenden, müssen Sie auch frühe TCP Demux deaktivieren, damit das
kubeletüber TCP eine Verbindung zu Pods auf Zweig-Netzwerkschnittstellen herstellen kann. Führen Sie den folgenden Befehl aus, um das frühe TCP Demux zu deaktivieren: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"}]}}}}'Anmerkung
Wenn Sie
1.11.0oder höher des Amazon-VPC-CNI-Plugins für das Kubernetes-Add-On verwenden undPOD_SECURITY_GROUP_ENFORCING_MODE=standardfestlegen, wie im nächsten Schritt beschrieben, müssen Sie den vorherigen Befehl nicht ausführen. -
Wenn Ihr Cluster
NodeLocal DNSCacheverwendet oder Sie die Calico-Netzwerkrichtlinie mit Ihren Pods verwenden möchten, die über eigene Sicherheitsgruppen verfügen, oder wenn Sie Kubernetes-Services vom TypNodePortundLoadBalancerhaben, die Instance-Ziele mit einem aufLocalfestgelegtenexternalTrafficPolicyfür Pods verwenden, denen Sie Sicherheitsgruppen zuweisen möchten, müssen Sie Version1.11.0oder höher des Amazon-VPC-CNI-Plugins für das Kubernetes-Add-On verwenden und die folgende Einstellung aktivieren:kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standardWICHTIG: Pod-Sicherheitsgruppenregeln werden nicht auf den Datenverkehr zwischen Pods oder zwischen Pods und Services wie
kubeletodernodeLocalDNSangewendet, die sich auf demselben Knoten befinden. Pods, die verschiedene Sicherheitsgruppen auf demselben Knoten verwenden, können nicht kommunizieren, da sie in verschiedenen Subnetzen konfiguriert sind und das Routing zwischen diesen Subnetzen deaktiviert ist. Für ausgehenden Datenverkehr von Pods an Adressen außerhalb der VPC wird die Netzwerkadresse in die IP-Adresse der primären Netzwerkschnittstelle der Instance übersetzt (es sei denn, Sie haben auchAWS_VPC_K8S_CNI_EXTERNALSNAT=truefestgelegt). Für diesen Datenverkehr werden die Regeln in den Sicherheitsgruppen für die primäre Netzwerkschnittstelle anstelle der Regeln in den Pods-Sicherheitsgruppen verwendet. ** Damit diese Einstellung auf vorhandene Pods angewendet wird, müssen Sie die Pods oder die Knoten, auf denen die Pods ausgeführt werden, neu starten. -
Informationen zur Verwendung einer Sicherheitsgruppenrichtlinie für Ihren Pod finden Sie unter Sicherheitsgruppenrichtlinie für einen Amazon-EKS-Pod verwenden.