From 85ad3461af27e312c0d77265b2ae42b34bb9e50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=9D=B0=E9=B2=81?= Date: Sat, 2 Apr 2022 17:28:16 +0800 Subject: [PATCH] docs: Resync network-policies.md --- .../services-networking/network-policies.md | 92 +++++++++++-------- 1 file changed, 54 insertions(+), 38 deletions(-) diff --git a/content/zh/docs/concepts/services-networking/network-policies.md b/content/zh/docs/concepts/services-networking/network-policies.md index fe52d20dce..c49c4b99f1 100644 --- a/content/zh/docs/concepts/services-networking/network-policies.md +++ b/content/zh/docs/concepts/services-networking/network-policies.md @@ -4,7 +4,7 @@ content_type: concept weight: 50 --- - -在定义基于 Pod 或名字空间的 NetworkPolicy 时,你会使用 +在定义基于 Pod 或名字空间的 NetworkPolicy 时,你会使用 {{< glossary_tooltip text="选择算符" term_id="selector">}} 来设定哪些流量 可以进入或离开与该算符匹配的 Pod。 @@ -62,33 +62,50 @@ Network policies are implemented by the [network plugin](/docs/concepts/extend-k 创建一个 NetworkPolicy 资源对象而没有控制器来使它生效的话,是没有任何作用的。 -## 隔离和非隔离的 Pod {#isolated-and-non-isolated-pods} -默认情况下,Pod 是非隔离的,它们接受任何来源的流量。 +## Pod 隔离的两种类型 -Pod 在被某 NetworkPolicy 选中时进入被隔离状态。 -一旦名字空间中有 NetworkPolicy 选择了特定的 Pod,该 Pod 会拒绝该 NetworkPolicy -所不允许的连接。 -(名字空间下其他未被 NetworkPolicy 所选择的 Pod 会继续接受所有的流量) +Pod 有两种隔离: 出口的隔离和入口的隔离。它们涉及到可以建立哪些连接。 +这里的“隔离”不是绝对的,而是意味着“有一些限制”。 +另外的,“非隔离方向”意味着在所述方向上没有限制。这两种隔离(或不隔离)是独立声明的, +并且都与从一个 Pod 到另一个 Pod 的连接有关。 -网络策略不会冲突,它们是累积的。 -如果任何一个或多个策略选择了一个 Pod, 则该 Pod 受限于这些策略的 -入站(Ingress)/出站(Egress)规则的并集。因此评估的顺序并不会影响策略的结果。 + -为了允许两个 Pods 之间的网络数据流,源端 Pod 上的出站(Egress)规则和 -目标端 Pod 上的入站(Ingress)规则都需要允许该流量。 -如果源端的出站(Egress)规则或目标端的入站(Ingress)规则拒绝该流量, -则流量将被拒绝。 +默认情况下,一个 Pod 的出口是非隔离的,即所有外向连接都是被允许的。如果有任何的 NetworkPolicy +选择该 Pod 并在其 `policyTypes` 中包含 “Egress”,则该 Pod 是出口隔离的, +我们称这样的策略适用于该 Pod 的出口。当一个 Pod 的出口被隔离时, +唯一允许的来自 Pod 的连接是适用于出口的 Pod 的某个 NetworkPolicy 的 `egress` 列表所允许的连接。 +这些 `egress` 列表的效果是相加的。 + + + +默认情况下,一个 Pod 对入口是非隔离的,即所有入站连接都是被允许的。如果有任何的 NetworkPolicy +选择该 Pod 并在其 `policyTypes` 中包含 “Ingress”,则该 Pod 被隔离入口, +我们称这种策略适用于该 Pod 的入口。 当一个 Pod 的入口被隔离时,唯一允许进入该 Pod +的连接是来自该 Pod 节点的连接和适用于入口的 Pod 的某个 NetworkPolicy 的 `ingress` +列表所允许的连接。这些 `ingress` 列表的效果是相加的。 + + + +网络策略是相加的,所以不会产生冲突。如果策略适用于 Pod 某一特定方向的流量, +Pod 在对应方向所允许的连接是适用的网络策略所允许的集合。 +因此,评估的顺序不影响策略的结果。 + +要允许从源 Pod 到目的 Pod 的连接,源 Pod 的出口策略和目的 Pod 的入口策略都需要允许连接。 +如果任何一方不允许连接,建立连接将会失败。 {{< note >}} @@ -262,7 +279,7 @@ __namespaceSelector__ *和* __podSelector__: 一个指定 `namespaceSelector` ... ``` - 在 `from` 数组中仅包含一个元素,只允许来自标有 `role=client` 的 Pod 且 @@ -339,8 +356,8 @@ You can create a "default" isolation policy for a namespace by creating a Networ --> ### 默认拒绝所有入站流量 -你可以通过创建选择所有容器但不允许任何进入这些容器的入站流量的 NetworkPolicy -来为名字空间创建 "default" 隔离策略。 +你可以通过创建选择所有容器但不允许任何进入这些容器的入站流量的 NetworkPolicy +来为名字空间创建 “default” 隔离策略。 {{< codenew file="service/networking/network-policy-default-deny-ingress.yaml" >}} @@ -369,8 +386,8 @@ You can create a "default" egress isolation policy for a namespace by creating a --> ### 默认拒绝所有出站流量 -你可以通过创建选择所有容器但不允许来自这些容器的任何出站流量的 NetworkPolicy -来为名字空间创建 "default" egress 隔离策略。 +你可以通过创建选择所有容器但不允许来自这些容器的任何出站流量的 NetworkPolicy +来为名字空间创建 “default” 隔离策略。 {{< codenew file="service/networking/network-policy-default-deny-egress.yaml" >}} @@ -429,7 +446,7 @@ When the feature gate is enabled, you can set the `protocol` field of a NetworkP 启用该特性门控后,用户可以将 NetworkPolicy 的 `protocol` 字段设置为 `SCTP`。 {{< note >}} - 你必须使用支持 SCTP 协议网络策略的 {{< glossary_tooltip text="CNI" term_id="cni" >}} 插件。 @@ -474,17 +491,17 @@ spec: ``` -上面的规则允许名字空间 `default` 中所有带有标签 `db` 的 Pod 使用 TCP 协议 +上面的规则允许名字空间 `default` 中所有带有标签 `role=db` 的 Pod 使用 TCP 协议 与 `10.0.0.0/24` 范围内的 IP 通信,只要目标端口介于 32000 和 32768 之间就可以。 @@ -493,7 +510,7 @@ The following restrictions apply when using this field: * 作为一种 Beta 阶段的特性,端口范围设定默认是被启用的。要在整个集群 范围内禁止使用 `endPort` 字段,你(或者你的集群管理员)需要为 API 服务器设置 `-feature-gates=NetworkPolicyEndPort=false,...` 以禁用 - `NetworkPolicyEndPort` + `NetworkPolicyEndPort` [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。 * `endPort` 字段必须等于或者大于 `port` 字段的值。 * 两个字段的设置值都只能是数字。 @@ -502,7 +519,7 @@ The following restrictions apply when using this field: @@ -518,7 +535,7 @@ the policy will be applied only for the single `port` field. --> ## 基于名字指向某名字空间 {#targeting-a-namespace-by-its-name} -{{< feature-state state="beta" for_k8s_version="1.21" >}} +{{< feature-state for_k8s_version="1.22" state="stable" >}}