MST

星途 面试题库

面试题:容器化 - Kubernetes网络策略

阐述Kubernetes网络策略(NetworkPolicy)的作用及工作原理。如何通过NetworkPolicy实现不同Pod之间的网络隔离与访问控制,假设存在两个应用A和B的Pod,A需要能访问B,但B不能主动访问A,给出对应的NetworkPolicy配置示例。
38.0万 热度难度
后端开发容器化

知识考点

AI 面试

面试题答案

一键面试

Kubernetes网络策略(NetworkPolicy)的作用

  1. 网络隔离:可以限制Pod之间的网络访问,确保不同应用、不同安全级别的Pod之间的网络流量得到有效隔离,增强集群的安全性。
  2. 访问控制:通过定义规则,精确控制哪些Pod可以与哪些其他Pod进行通信,包括允许或拒绝特定端口、协议的流量。

工作原理

  1. 基于标签选择器:NetworkPolicy使用标签选择器来标识目标Pod集合。通过匹配Pod的标签,确定该策略作用于哪些Pod。
  2. 流量规则定义:策略中定义了允许或拒绝的入站(ingress)和出站(egress)流量规则。这些规则指定了源或目标Pod的标签选择器、端口范围、协议等条件。
  3. 网络插件协作: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。