K8S网络相关-NetworkPolicy解读

NetworkPolicy 是 Kubernetes 中用于控制 Pod 之间或 Pod 与外部资源之间网络流量的一种资源对象。它允许用户定义规则,限制或允许网络访问。通过 NetworkPolicy,你可以精细化地控制 Kubernetes 集群内部的网络流量,例如只允许特定的 Pod 或 IP 地址访问某些 Pod。

NetworkPolicy 的作用

在k8s集群中如果,没有 NetworkPolicy 时,Kubernetes 集群默认允许所有 Pod 之间的相互通信。启用 NetworkPolicy 后,可以自定义规则来允许或阻止特定的网络流量。

使用场景

  • 控制同一命名空间内 Pod 之间的网络通信。

  • 限制不同命名空间中的 Pod 之间的访问。

  • 限制外部 IP 地址或服务对 Pod 的访问

NetworkPolicy组成

podSelector:定义哪些 Pod 会受到该网络策略的影响。可以通过 Pod 标签选择器来匹配目标 Pod。

ingress和 egress 规则:分别控制入站(Ingress)和出站(Egress)流量。你可以指定允许哪些流量源或目的地、协议、端口等。

policyTypes:定义该策略是用于控制入站流量(Ingress)、出站流量(Egress),还是两者兼顾。

NetworkPolicy创建

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-backend-ingress
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: frontend  # 应用于具有 app=frontend 标签的 Pod
  policyTypes:
  - Ingress
    ingress:
  - from:
    - podSelector:
        matchLabels:
          app: backend  # 只允许来自 app=backend 的 Pod 访问

只允许带有 app: frontend 标签的 Pod 可以接受带有 app: backend 标签的 Pod 的流量,并且限制其他所有入站流量。

podSelector 选择了所有带有 app: frontend 标签的 Pod。

ingress 规则规定了只有带有 app: backend 标签的 Pod 可以访问这些 frontend Pod。

policyTypes 定义策略类型为 Ingress,仅控制入站流量。

应用

kubectl apply -f networkpolicy.yaml

验证是否成功创建

kubectl get networkpolicy -n default

如果能够看到 NetworkPolicy 列表,且没有报错,则说明网络策略功能已经启用。

检查网络策略的支持情况

kubectl get networkpolicies --all-namespaces

主要功能

控制入站流量:你可以指定哪些 Pod 或 IP 地址能够访问目标 Pod。如,只允许某些服务访问数据库。

控制出站流量:你可以限制 Pod 发出网络请求的目标范围。如,禁止应用 Pod 访问外部互联网,保证安全性。

命名空间隔离:通过定义跨命名空间的规则,可以限制不同命名空间中的 Pod 是否可以相互通信。

注意事项

Kubernetes 本身不会直接实现 NetworkPolicy,而是依赖网络插件来支持这一功能。首先,检查你的 Kubernetes 集群是否安装了支持 NetworkPolicy 的网络插件。常见支持 NetworkPolicy 的插件包括:Calico、Cilium和Weave等。

查询是否支持

kubectl get pods -n kube-system

查看是否有 Calico、Cilium、Weave 等网络插件相关的 Pod 在运行,如果没有显示支持 NetworkPolicy 的网络插件,说明你的集群可能没有启用 NetworkPolicy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值