测验:NetworkPolicy
如果只允许从 web Pod 到 api Pod 的流量,策略中的 podSelector 应选择什么?
- 接收流量的 api Pod
- 发送流量的 web Pod 和接收流量的 api Pod
- 选择整个命名空间的空选择器
- 发送流量的 web Pod
以下哪项策略会拒绝“命名空间内所有 Pod 的全部入站流量”?
- 完全不创建策略,使该命名空间没有任何入站规则
- 使用
podSelector: {}和policyTypes: [Ingress],且没有 ingress 规则的策略 - 使用
podSelector: {}和一条ingress: [{}],但省略 policyTypes 的策略 - 将
policyTypes留空,同时列出多条 ingress 规则的策略
在同一个 from 条目内同时使用 namespaceSelector 和 podSelector,含义是什么?
- 必须同时满足两个条件才允许(AND)
- 语法错误
- 满足任一条件即可允许(OR)
- namespaceSelector 会被忽略
启用默认拒绝出站流量后,所有服务都不可用了。首先应检查什么?
- 是否有允许 DNS(53)出站流量的策略
- 节点内核版本是否低于 CNI 要求
- Service 类型是否为 ClusterIP
- Pod 的 CPU 使用率是否达到 limit
DNS 允许策略只开放 UDP 53 可能导致什么问题?
- CoreDNS Pod 被出站策略阻断而无法启动
- TCP 53 被阻断,导致 Pod IP 分配失败
- 响应较大而转为 TCP 的查询可能失败
- 没有问题;根据规范,DNS 查询只使用 UDP 53
创建 NetworkPolicy 后却没有阻断任何流量,最可能的原因是什么?
- CNI 插件不支持 NetworkPolicy
- 没有在策略的 metadata 中指定目标命名空间
- 策略名称含大写字母,导致标签选择器匹配失败
- 将 apiVersion 写为 v1,策略因此被忽略
为什么不建议用 ipBlock 控制集群内部 Pod 之间的通信?
- ipBlock 不支持使用 except 排除例外地址段
- Pod IP 会在重新创建时变化,基于标签的选择更稳定
- ipBlock 只能用于入站规则,不能用于出站规则
- CIDR 表示法不支持 IPv6 Pod 网络