pods 的安全组
适用于 pods 的安全组将 Amazon EC2 安全组与 Kubernetes pods 集成在一起。您可以使用 Amazon EC2 安全组定义允许流向和来自于您部署到运行在许多 Amazon EC2 实例类型和 Fargate 上节点的 pods 的入站和出站网络流量的规则。有关此功能的详细说明,请参阅 pods 的安全组介绍
注意事项
在部署适用于 pods 的安全组之前,请考虑以下限制和条件:
-
在 Amazon EC2 节点上运行的 Pods 可以是 Amazon EKS 支持的任何 Kubernetes 版本,但在 Fargate 上运行的 pods 必须在
1.18或更高版本的集群中。 -
适用于 pods 的安全组不能与 Windows 节点一起使用。
-
pods 的安全组不能与为包含 Amazon EC2 节点的
IPv6系列配置的集群一起使用。但是,您可以将 pods 的安全组与为仅包含 Fargate 节点的IPv6系列配置的集群一起使用。有关更多信息,请参阅教程:将 IPv6 地址分配给 pods 和 services。 -
大多数基于 Nitro 的 Amazon EC2 实例系列都支持 pods 的安全组,包括
m5、c5、r5、p3、m6g、c6g和r6g实例系列。t3实例系列不受支持。有关受支持的实例的完整集,请参阅 GitHub 上的limits.go文件。您的节点必须是在该文件中拥有 IsTrunkingCompatible: true的所列出的实例类型之一。 -
如果您还使用 pod 安全策略来限制对 pod 变异的访问,则
eks-vpc-resource-controller和vpc-resource-controllerKubernetes 服务账户必须在 KubernetesClusterRoleBinding中指定用于psp所分配到的role。如果您使用的是默认 Amazon EKS psp、role 和 ClusterRoleBinding,则此为eks:podsecuritypolicy:authenticatedClusterRoleBinding。例如,您将服务账户添加到subjects:部分,如以下示例所示:... subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated - kind: ServiceAccount name: vpc-resource-controller - kind: ServiceAccount name: eks-vpc-resource-controller -
如果您将自定义联网和适用于 pods 的安全组一起使用,则请使用适用于 pods 的安全组所指定的安全组,不要使用
ENIconfig中指定的安全组。 -
如果您使用的是版本
1.10.2或更早版本的 Amazon VPC CNI 插件,并且将terminationGracePeriodSeconds设置包括在您的 pod 规范中,则该设置的值不能为零。 -
如果您使用的是版本
1.10或更早版本的 Amazon VPC CNI 插件或POD_SECURITY_GROUP_ENFORCING_MODE=strict的版本1.11(默认设置),则使用externalTrafficPolicy设置为Local的实例目标的NodePort和LoadBalancer型 Kubernetes 服务在您将安全组分配到的 pods 中不受支持。有关将负载均衡器与实例目标一起使用的更多信息,请参阅 Amazon EKS 上的网络负载均衡。如果您使用的是POD_SECURITY_GROUP_ENFORCING_MODE=standard的版本1.11或者更高版本的插件,则支持externalTrafficPolicy被设置为Local的实例类型。 -
如果您使用的是版本
1.10或更早版本的 Amazon VPC CNI 插件或POD_SECURITY_GROUP_ENFORCING_MODE=strict的版本1.11(默认设置),对于来自分配有安全组的 pods 的出站流量,禁用源 NAT,以便应用出站安全组规则。要访问 Internet,必须在配置了 NAT 网关或实例的私有子网中部署的节点上启动具有已分配安全组的 pods。将分配的安全组部署到公有子网的 Pods 无法访问 Internet。如果您使用的是
POD_SECURITY_GROUP_ENFORCING_MODE=standard的版本1.11或者更高版本的插件,则发往 VPC 之外的 pod 流量将转换为实例主网络接口的 IP 地址。对于此流量,将使用主网络接口的安全组中的规则,而不是 pod's 安全组中的规则。 -
要将 Calico 网络策略用于具有关联安全组的 pods,您必须使用版本
1.11.0或更高版本的 Amazon VPC CNI 插件并设置POD_SECURITY_GROUP_ENFORCING_MODE=standard。否则,流向和来自具有关联安全组的 pods 的流量不受 Calico 网络策略执行限制,并且仅受限于 Amazon EC2 安全组执行。要更新 Amazon VPC CNI 版本,请参阅 管理 Amazon VPC CNI plugin for Kubernetes。 -
在使用集群中的安全组的 Amazon EC2 节点上运行且使用 Nodelocal DNSCache
的 Pods 仅支持版本 1.11.0或更高版本 Amazon VPC CNI 插件和POD_SECURITY_GROUP_ENFORCING_MODE=standard。要更新 Amazon VPC CNI 插件版本,请参阅 管理 Amazon VPC CNI plugin for Kubernetes。
将 Amazon VPC CNI 附加组件配置为 pods 的安全组
要部署适用于 pods 的安全组
如果您使用的是仅适用于 Fargate pods 的安全组,而且集群上没有任何 Amazon EC2 节点,请跳至 部署示例应用程序。
-
使用以下命令查看您当前的 CNI 插件版本:
kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2输出示例如下。
amazon-k8s-cni-init:1.7.5-eksbuild.1amazon-k8s-cni:1.7.5-eksbuild.1如果您的 CNI 插件版本低于 1.7.7,请将其更新到
1.7.7或更高版本。有关更多信息,请参阅更新 Amazon VPC CNI plugin for Kubernetes 附加组件。 -
将
AmazonEKSVPCResourceController托管策略添加到与您的 Amazon EKS 集群关联的集群角色。策略允许角色管理网络接口、网络接口的私有 IP 地址以及与网络实例之间的连接和分离。 -
确定您的集群 IAM 角色的 ARN。将
替换为您的集群名称。my-clusteraws eks describe-cluster --namemy-cluster--query cluster.roleArn --output text输出示例如下。
arn:aws:iam::111122223333:role/eksClusterRole -
以下命令可将策略附加到名为
的集群角色。将eksClusterRole替换为您的角色的名称。eksClusterRoleaws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController \ --role-nameeksClusterRole
-
-
通过在
aws-nodeDaemonSet中将ENABLE_POD_ENI变量设置为true,启用 Amazon VPC CNI 附加组件来管理 pods 的网络接口。此设置一旦设置为true后,附加组件会为集群中的每个节点添加一个带有值vpc.amazonaws.com/has-trunk-attached=true的标注。VPC 资源控制器会创建并附加一个带有aws-k8s-trunk-eni描述且名为中继网络接口的特殊网络接口。kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=true注意 中继网络接口包含在实例类型支持的最大网络接口数中。有关每种实例类型支持的最大网络接口数的列表,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的每种实例类型的每个网络接口的 IP 地址数。如果您的节点已经附加了最大数量的标准网络接口,则 VPC 资源控制器将预订一个空间。您将必须缩减您正在运行的 pods,以便控制器足以分离和删除标准网络接口、创建中继网络接口并将其附加到实例。
您可以使用以下命令查看哪些节点的
aws-k8s-trunk-eni设置为true。如果返回No resources found,则等几秒钟后重试。上一步需要重新启动 CNI pods,这需要几秒钟的时间。kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=true创建中继网络接口后,可以从中继或标准网络接口为 pods 分配辅助 IP 地址。如果节点被删除,中继接口将自动删除。
当您在后面的步骤中部署适用于 pod 的安全组时,VPC 资源控制器会创建一个具有
aws-k8s-branch-eni描述的名为分支网络接口的特殊网络接口,并将安全组与其关联。除了附加到节点的标准网络接口和中继网络接口之外,还会创建分支网络接口。如果您使用的是存活探测或就绪探测器,则您还需要禁用 TCP 早期解复用器,以便kubelet可以使用 TCP 连接到分支网络接口上的 pods。要禁用 TCP 早期解复用器,请运行以下命令: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"}]}}}}'注意 如果您使用的是
1.11.0或更高版本的 Amazon VPC CNI plugin for Kubernetes 附加组件并设置POD_SECURITY_GROUP_ENFORCING_MODE=standard,如下一步所述,则您就不需要运行上一个命令。 -
如果您的集群使用 NodeLocal DNSCache,或者您想将 Calico 网络策略用于拥有自己的安全组的 pods,或者您有
NodePort和LoadBalancer类型的 Kubernetes 服务,将externalTrafficPolicy设置为Local的实例目标用于您要将安全组分配到的 pods,则您必须使用版本1.11.0或更高版本的 Amazon VPC CNI plugin for Kubernetes 附加组件,并启用以下设置:kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standard重要 -
Pod 安全组规则不适用于位于相同节点上的 pods 之间或介于 pods 和services之间之外的流量,例如
kubelet或nodeLocalDNS。 -
从 pods 到 VPC 以外的地址的出站流量是转换为实例的主网络接口的 IP 地址的网络地址(除非您还设置了
AWS_VPC_K8S_CNI_EXTERNALSNAT=true)。对于此流量,将使用主网络接口的安全组中的规则,而不是 pod's 安全组中的规则。 -
要将此设置应用于现有 pods,必须重新启动 pods 在其上运行的 pods 或节点。
-
-
创建要将资源部署到该处的命名空间。
kubectl create namespacemy-namespace -
将 Amazon EKS
SecurityGroupPolicy部署到集群。-
将以下示例安全策略保存到名为
的文件中。如果您希望根据服务账户标签选择 pods,您可以将my-security-group-policy.yamlpodSelector替换为serviceAccountSelector。您必须指定一个或其他选择器。空的podSelector(示例:podSelector: {})会选择命名空间中的所有 pods。空的serviceAccountSelector会选择命名空间中的所有服务账户。您必须为groupIds指定 1-5 个安全组 ID。如果指定了多个 ID,则所有安全组中的所有规则的组合都会对选定的 pods 生效。apiVersion: vpcresources.k8s.aws/v1beta1 kind: SecurityGroupPolicy metadata: name:my-security-group-policynamespace:my-namespacespec:podSelector: matchLabels: role:my-rolesecurityGroups: groupIds: -sg-abc123重要 -
您在策略中指定的安全组必须是存在的。如果它们不存在,那么当您部署与选择器匹配的 pod 时,该 pod 会在创建过程中处于卡住状态。如果您描述 pod,则会看到类似于以下内容的错误消息:
An error occurred (InvalidSecurityGroupID.NotFound) when calling the CreateNetworkInterface operation: The securityGroup ID '。sg-abc123' does not exist -
安全组必须允许通过您为其配置了探测器的任何端口来自集群安全组的入站通信(对于
kubelet)。 -
安全组必须允许与安全组进行出站通信。此安全组应允许来自其的入站 TCP 和 UDP 端口 53(针对 CoreDNS pods)。
-
如果您将安全组策略与 Fargate 一起使用,请确保您的安全组具有允许 pods 与 Kubernetes 控制面板通信的规则。执行此操作的最简单方法是将集群安全组指定为安全组之一。
-
安全组策略仅适用于新调度的 pods。不影响正在运行的 pods。
-
-
部署策略。
kubectl apply -fmy-security-group-policy.yaml
-
-
部署其标注与上一步中指定的
的podselector值相匹配的示例应用程序。my-role-
将以下内容保存到一个文件中。
apiVersion: apps/v1 kind: Deployment metadata: name:my-deploymentnamespace:my-namespacelabels: app:my-appspec: replicas:1selector: matchLabels: app:my-apptemplate: metadata: labels: app:my-approle:my-rolespec: containers: - name:my-containerimage:my-imageports: - containerPort:80 -
使用以下命令部署应用程序。当您部署应用程序时,Amazon VPC CNI plugin for Kubernetes 插件将匹配
role标注,并且您在上一步中指定的安全组将应用到 pod。kubectl apply -fmy-security-group-policy.yaml注意 -
如果您的 pod 卡在
Waiting状态,而且您在描述 pod 时看到了Insufficient permissions: Unable to create Elastic Network Interface.,请确认您已在上一步中将 IAM policy 添加到 IAM 集群角色。 -
如果您的 pod 卡在
Pending状态,请确认您的节点实例类型在 Github 上的limits.go中 IsTrunkingCompatible: true,并且尚未达到实例类型支持的最大分支网络接口数乘以节点组中节点数得到的数值。例如,m5.large实例支持 9 个分支网络接口。如果节点组有 5 个节点,则最多可以为节点组创建 45 个分支网络接口。在删除另一个具有关联安全组的 pod 前,您尝试部署的第 46 个 pod 将会处于Pending状态。
如果您运行
kubectl describe pod并看到类似于以下消息内容的消息,则可以安全地忽略该消息。当 CNI 插件尝试在创建网络接口时设置主机联网并失败时,可能会出现此消息。Amazon VPC CNI plugin for Kubernetes 会记录此事件,直到创建了网络接口为止。my-deployment-xxxxxxxxxx-xxxxx-nmy-namespaceFailed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "e24268322e55c8185721f52df6493684f6c2c3bf4fd59c9c121fd4cdc894579f" network for pod "my-deployment-59f5f68b58-c89wx": networkPlugin cni failed to set up pod "my-deployment-59f5f68b58-c89wx_my-namespace" network: add cmd: failed to assign an IP address to container您不能超过可在实例类型上运行的 pods 的最大数量。有关可在每种实例类型上运行的 pods 的最大数量的列表,请参阅 GitHub 上的 eni-max-pods.txt
。当您删除具有关联安全组的 pod 或删除运行该 pod 的节点时,VPC 资源控制器会删除分支网络接口。如果您使用适用于安全组的 pods 删除带有 pods 的集群,则该控制器不会删除分支网络接口,因此您需要自行删除它们。 -
-
部署示例应用程序
要将安全组用于 pods,您必须拥有现有安全组并且部署 Amazon EKS SecurityGroupPolicy 到集群中,如以下程序所述。以下步骤介绍如何将安全组策略用于 pod。除非另有说明,请从同一个终端完成所有步骤,因为以下步骤中使用的变量不会在终端之间持续存在。
要使用安全组部署示例 pod
-
创建要与 pod 一起使用的安全组。后续步骤可帮助您创建一个简单的安全组,仅用于说明目的。在生产集群中,您的规则可能会有所不同。
-
检索集群的 VPC 和集群安全组的 ID。将
替换为您的集群名称。my-clustermy_cluster_name=my-clustermy_cluster_vpc_id=$(aws eks describe-cluster \ --name $my_cluster_name \ --query cluster.resourcesVpcConfig.vpcId \ --output text) my_cluster_security_group_id=$(aws eks describe-cluster \ --name $my_cluster_name \ --query cluster.resourcesVpcConfig.clusterSecurityGroupId \ --output text) -
为 pod 创建安全组。将
替换为您自己的值。请记下运行命令后在输出中返回的安全组的 ID。您将在后面的步骤中用到它。my-pod-security-groupmy_pod_security_group_name=my-pod-security-groupaws ec2 create-security-group \ --vpc-id $my_cluster_vpc_id \ --group-name $my_pod_security_group_name \ --description "My pod security group" my_pod_security_group_id=$(aws ec2 describe-security-groups \ --filters Name=group-name,Values=$my_pod_security_group_name \ --query 'SecurityGroups[].GroupId' \ --output text) echo $my_pod_security_group_id -
允许 TCP 和 UDP 端口 53 流量从您在上一步中创建的 pod 安全组发送到您的集群安全组。如果您希望 DNS 流量从您的 pod 流向与集群安全组不同的安全组,则将
替换为您自己的安全组 ID。记下每个命令返回的输出中的$my_cluster_security_group_idSecurityGroupRuleId返回的值。您将在后面的步骤中用到它们。aws ec2 authorize-security-group-ingress \ --group-id$my_cluster_security_group_id\ --protocol tcp --port 53 --source-group $my_pod_security_group_id aws ec2 authorize-security-group-ingress \ --group-id$my_cluster_security_group_id\ --protocol udp --port 53 --source-group $my_pod_security_group_id -
允许通过任何协议和端口从与安全组关联的任何 pod 到您的 pod 安全组的入站流量。安全组具有默认出站规则,允许通过任何协议和端口从与安全组关联的 pods 到您的任何目的地的出站流量。
aws ec2 authorize-security-group-ingress \ --group-id $my_pod_security_group_id \ --protocol -1 --port -1 --source-group $my_pod_security_group_id
-
-
创建要将资源部署到该处的 Kubernetes 命名空间。
kubectl create namespacemy-namespace -
将 Amazon EKS
SecurityGroupPolicy部署到集群。-
将以下示例安全策略保存到名为
的文件中。如果您希望根据服务账户标签选择 pods,您可以将my-security-group-policy.yamlpodSelector替换为serviceAccountSelector。您必须指定一个或其他选择器。空的podSelector(示例:podSelector: {})会选择命名空间中的所有 pods。空的serviceAccountSelector会选择命名空间中的所有服务账户。您必须为groupIds指定 1-5 个安全组 ID。如果指定了多个 ID,则所有安全组中的所有规则的组合都会对选定的 pods 生效。将替换为您在为 pod 创建安全组时在上一步中注明的安全组的 ID。sg-05b1d815d1EXAMPLEapiVersion: vpcresources.k8s.aws/v1beta1 kind: SecurityGroupPolicy metadata: name:my-security-group-policynamespace:my-namespacespec:podSelector: matchLabels: role:my-rolesecurityGroups: groupIds: -sg-05b1d815d1EXAMPLE重要 您为 pod 指定的一个或多个安全组必须符合以下标准:
-
它们必须存在。如果它们不存在,那么当您部署与选择器匹配的 pod 时,该 pod 会在创建过程中处于卡住状态。如果您描述 pod,则会看到类似于以下内容的错误消息:
An error occurred (InvalidSecurityGroupID.NotFound) when calling the CreateNetworkInterface operation: The securityGroup ID '。sg-05b1d815d1EXAMPLE' does not exist -
它们必须允许通过您为其配置了探测器的任何端口从集群安全组进行入站通信(对于
kubelet)。 -
它们必须允许通过 TCP 和 UDP 端口 53 对分配到运行 CoreDNS 的 pods 的安全组的出站通信。您的 CoreDNS pods 的安全组必须允许来自您的安全组的入站 TCP 和 UDP 端口 53 流量。
-
它们必须具备必要的入站和出站规则才能与它们需要与其通信的其他 pods 进行通信。
-
如果您将安全组与 Fargate 一起使用,它们必须具有允许 pods 与 Kubernetes 控制面板通信的规则。执行此操作的最简单方法是将集群安全组指定为安全组之一。
安全组策略仅适用于新调度的 pods。不影响正在运行的 pods。
-
-
部署策略。
kubectl apply -fmy-security-group-policy.yaml
-
-
部署其标注与上一步中指定的
的podSelector值相匹配的示例应用程序。my-role-
将以下内容保存到名为
的文件中。sample-application.yamlapiVersion: apps/v1 kind: Deployment metadata: name:my-deploymentnamespace:my-namespacelabels: app:my-appspec: replicas:4selector: matchLabels: app:my-apptemplate: metadata: labels: app:my-approle:my-rolespec: terminationGracePeriodSeconds:120containers: - name:nginximage:public.ecr.aws/nginx/nginx:1.21ports: - containerPort:80--- apiVersion: v1 kind: Service metadata: name:my-appnamespace:my-namespacelabels: app:my-appspec: selector: app:my-appports: - protocol:TCPport:80targetPort:80 -
使用以下命令部署应用程序。当您部署应用程序时,Amazon VPC CNI plugin for Kubernetes 插件将匹配
role标注,并且您在上一步中指定的安全组将应用到 pod。kubectl apply -fsample-application.yaml注意 -
如果您的 pod 卡在
Waiting状态,而且您在描述 pod 时看到了Insufficient permissions: Unable to create Elastic Network Interface.,请确认您已在上一步中将 IAM policy 添加到 IAM 集群角色。 -
如果您的 pod 卡在
Pending状态,请确认您的节点实例类型已列在limits.go中,并且尚未达到实例类型支持的最大分支网络接口数乘以节点组中节点数得到的数值。例如, m5.large实例支持 9 个分支网络接口。如果节点组有 5 个节点,则最多可以为节点组创建 45 个分支网络接口。在删除另一个具有关联安全组的 pod 前,您尝试部署的第 46 个 pod 将会处于Pending状态。
如果您运行
kubectl describe pod并看到类似于以下消息内容的消息,则可以安全地忽略该消息。当 CNI 插件尝试在创建网络接口时设置主机联网并失败时,可能会出现此消息。CNI 插件会记录此事件,直到创建了网络接口为止。my-deployment-xxxxxxxxxx-xxxxx-nmy-namespaceFailed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "e24268322e55c8185721f52df6493684f6c2c3bf4fd59c9c121fd4cdc894579f" network for pod "my-deployment-5df6f7687b-4fbjm": networkPlugin cni failed to set up pod "my-deployment-5df6f7687b-4fbjm-c89wx_my-namespace" network: add cmd: failed to assign an IP address to container您不能超过可在实例类型上运行的 pods 的最大数量。有关可在每种实例类型上运行的 pods 的最大数量的列表,请参阅 GitHub 上的 eni-max-pods.txt
。当您删除具有关联安全组的 pod 或删除运行该 pod 的节点时,VPC 资源控制器会删除分支网络接口。如果您使用适用于安全组的 pods 删除带有 pods 的集群,则该控制器不会删除分支网络接口,因此您需要自行删除它们。 -
-
-
查看使用示例应用程序部署的 pods。对于本主题的其余部分,此终端称为
TerminalA。kubectl get pods -n my-namespace -o wide输出示例如下。
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-deployment-5df6f7687b-4fbjm1/1 Running 0 7m51s192.168.53.48ip-192-168-33-28.region-code.compute.internal <none> <none> my-deployment-5df6f7687b-j9fl41/1 Running 0 7m51s192.168.70.145ip-192-168-92-33.region-code.compute.internal <none> <none> my-deployment-5df6f7687b-rjxcz1/1 Running 0 7m51s192.168.73.207ip-192-168-92-33.region-code.compute.internal <none> <none> my-deployment-5df6f7687b-zmb421/1 Running 0 7m51s192.168.63.27ip-192-168-33-28.region-code.compute.internal <none> <none> -
在单独的终端中,shell 进入其中一个 pods。对于本主题的其余部分,此终端称为
TerminalB。将替换为您在上一步输出中返回的其中一个 pods 的 ID。5df6f7687b-4fbjmkubectl exec -it -n my-namespace my-deployment--- /bin/bash5df6f7687b-4fbjm -
从
TerminalB的 shell 中,确认示例应用程序是否有效。curlmy-app输出示例如下。
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ...您收到了输出,因为运行该应用程序的所有 pods 与您创建的安全组关联。该组包含一条规则,允许安全组所关联的所有 pods 之间的所有流量。允许 DNS 流量从该安全组出站到与您的节点关联的集群安全组。节点正在运行 CoreDNS pods,您的 pods 对该 DNS 进行了名称查找。
-
从
TerminalA中,删除允许从安全组与集群安全组进行 DNS 通信的安全组规则。如果您在上一步中没有将 DNS 规则添加到集群安全组中,请将替换为您在其中创建规则的安全组的 ID。将$my_cluster_security_group_id和sgr-0407e21efdEXAMPLE替换为您在上一步中注明的安全组规则的 ID。sgr-04dedf9701EXAMPLEaws ec2 revoke-security-group-ingress --group-id$my_cluster_security_group_id--security-group-rule-idssgr-0407e21efdEXAMPLEaws ec2 revoke-security-group-ingress --group-id$my_cluster_security_group_id--security-group-rule-idssgr-04dedf9701EXAMPLE -
从
TerminalB中,尝试再次访问该应用程序。curlmy-app由于 pod 不再能够访问具有与其关联的集群安全组的 CoreDNS pods,尝试失败。集群安全组不再具有安全组规则,该规则允许从与 pod 关联的安全组进行 DNS 通信。
如果您尝试使用上一步中的其中一个 pods 返回的 IP 地址访问应用程序,您仍然会收到响应,因为在与安全组相关联的所有 pods 之间允许所有端口,并且不需要名称查找。
-
完成实验后,您可以删除使用以下命令创建的示例安全组策略、应用程序和安全组。
kubectl delete namespacemy-namespaceaws ec2 delete-security-group --group-id$my_pod_security_group_id