面试题答案
一键面试Kubernetes网络策略(NetworkPolicy)的作用
- 网络隔离:可以限制Pod之间的网络访问,确保不同应用、不同安全级别的Pod之间的网络流量得到有效隔离,增强集群的安全性。
- 访问控制:通过定义规则,精确控制哪些Pod可以与哪些其他Pod进行通信,包括允许或拒绝特定端口、协议的流量。
工作原理
- 基于标签选择器:NetworkPolicy使用标签选择器来标识目标Pod集合。通过匹配Pod的标签,确定该策略作用于哪些Pod。
- 流量规则定义:策略中定义了允许或拒绝的入站(ingress)和出站(egress)流量规则。这些规则指定了源或目标Pod的标签选择器、端口范围、协议等条件。
- 网络插件协作:Kubernetes网络策略依赖于底层的网络插件(如Calico、Flannel等)来实施具体的网络隔离和访问控制。网络插件根据NetworkPolicy规则,在Pod的网络接口或网络节点上配置相应的防火墙规则。
实现应用A和B的Pod网络隔离与访问控制配置示例
假设应用A的Pod标签为 app=A
,应用B的Pod标签为 app=B
。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-A-to-B
spec:
podSelector:
matchLabels:
app: B
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: A
上述配置中:
podSelector
选择了标签为app=B
的Pod,即应用B的Pod。policyTypes
定义策略类型为Ingress
,表示入站流量控制。ingress
规则中,from
表示允许来自标签为app=A
的Pod(即应用A的Pod)的入站流量,实现了A能访问B,而B不能主动访问A。