在线客服

AWS EKS集群如何配置网络策略,限制Pod之间的访问?

⏱️2026-02-19 09:00 👁️46

AWS EKS 集群如何配置网络策略限制 Pod 之间的访问

AWS EKS(Elastic Kubernetes Service) 中,网络策略(Network Policy) 用于控制不同 Pod 之间的流量,实现细粒度的安全隔离。通过配置网络策略,可以指定哪些 Pod 可以相互通信,哪些被限制,从而提升集群的安全性。下面将介绍如何在 EKS 集群中配置网络策略来限制 Pod 之间的访问。

1. 前提条件 📝

  • 已创建并可用的 EKS 集群。
  • kubectl 已正确配置并能访问 EKS。
  • 需要在集群中安装支持网络策略的 CNI 插件(如 Calico 或 Cilium),因为 AWS 默认 VPC CNI 不原生支持 NetworkPolicy。

2. 安装并启用 Calico 💡

Calico 是最常用的 Kubernetes 网络策略实现方案。在 EKS 集群上可以这样部署(以最新官方文档为准,示例命令如下):

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

等待 Pod 状态变为 Running。

3. 创建示例 Pod 与 Namespace 🏷️

kubectl create namespace demo
kubectl run pod-a -n demo --image=nginx
kubectl run pod-b -n demo --image=nginx

4. 配置 NetworkPolicy 限制访问 🔒

以下示例禁止所有 Pod 相互访问,只允许 pod-a 能接收来自自身的流量:

<pre style="background:#f7f7f7;padding:10px;">
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-to-pod-a
  namespace: demo
spec:
  podSelector:
    matchLabels:
      run: pod-a
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector:
            matchLabels:
              run: pod-a
</pre>

  • podSelector: 匹配到 pod-a。
  • ingress.from: 只允许来自自身(pod-a)流量。
  • 其余 Pod 无法访问 pod-a。

开放特定标签的 Pod 访问

例如,只允许带有 app=frontend 标签的 Pod 访问 pod-a,可以这样写:

<pre style="background:#f7f7f7;padding:10px;">
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-pod-a
  namespace: demo
spec:
  podSelector:
    matchLabels:
      run: pod-a
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: frontend
</pre>

5. 验证效果 🔍

  1. 进入 pod-b,尝试访问 pod-a 的 80 端口:
    kubectl exec -n demo pod-b -- curl pod-a
  2. 如果访问不通,则说明策略生效。

6. 注意事项 ⚠️

  • NetworkPolicy 只对被支持的 CNI 生效;AWS 原生 CNI 需结合第三方插件。
  • NetworkPolicy 默认是“白名单”模式,未被允许的流量都被拒绝。
  • 可以按需对子网、端口等配置更复杂的规则。

总结 😊

通过Kubernetes NetworkPolicy,你可以很方便地在 AWS EKS 中实现微服务间的安全隔离。灵活运用,既保障了安全又保持了业务灵活性!

鲨鱼云自助平台

鲨鱼云自助平台是一站式国际云服务解决方案平台,支持阿里云国际、腾讯云国际、亚马逊AWS、谷歌云GCP等主流云厂商账号的开通、充值与管理。

热门文章
更多>