NetworkPolicy
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
NetworkPolicy
NetworkPolicy 描述了允许一组 Pod 访问的网络流量。
- apiVersion: networking.k8s.io/v1 
- kind: NetworkPolicy 
- metadata (ObjectMeta) - 标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata 
- spec (NetworkPolicySpec) - spec 代表此 NetworkPolicy 的期望行为的规范。 
NetworkPolicySpec
NetworkPolicySpec 提供了 NetworkPolicy 的规范。
- podSelector (LabelSelector) - podSelector 选择此 NetworkPolicy 对象适用的 Pod。规则数组应用于此字段选择的任何 Pod。空选择器匹配策略命名空间中的所有 Pod。多个网络策略可以匹配同一组 Pod。在这种情况下,每个策略的入口规则会累加组合。此字段是可选的。如果未指定,则默认为空选择器。 
- policyTypes ([]string) - 原子性:在合并期间将被替换 - policyTypes 是 NetworkPolicy 相关的规则类型的列表。有效选项是 ["Ingress"]、["Egress"] 或 ["Ingress", "Egress"]。如果未指定此字段,它将根据入口或出口规则的存在情况进行默认设置;包含出口部分的策略假定会影响出口,而所有策略(无论是否包含入口部分)都假定会影响入口。如果要编写仅影响出口的策略,则必须显式指定 policyTypes [ "Egress" ]。同样,如果要编写指定不允许任何出口流量的策略,则必须指定包含 "Egress" 的 policyTypes 值(因为此类策略不包含出口部分,否则将默认仅为 [ "Ingress" ])。此字段在 1.8 中为 Beta 级别。 
- ingress ([]NetworkPolicyIngressRule) - 原子性:在合并期间将被替换 - ingress 是应用于所选 Pod 的入口规则列表。如果不存在选择该 Pod 的 NetworkPolicies(且集群策略另外允许流量),或者流量源是 Pod 的本地节点,或者流量匹配 NetworkPolicy 对象(其 podSelector 匹配该 Pod)中的至少一个入口规则,则允许流量进入该 Pod。如果此字段为空,则此 NetworkPolicy 不允许任何流量(仅用于确保其选择的 Pod 默认是隔离的)。 - NetworkPolicyIngressRule 描述了允许进入 NetworkPolicySpec 的 podSelector 匹配的 Pod 的特定流量集。流量必须同时匹配端口和源。 - ingress.from ([]NetworkPolicyPeer) - 原子性:在合并期间将被替换 - from 是应该能够访问所选 Pod 的流量源列表。此列表中的条目通过逻辑 OR 操作进行组合。如果此字段为空或缺失,则此规则匹配所有源(流量不受源限制)。如果此字段存在且至少包含一个条目,则此规则仅在流量至少匹配 from 列表中的一个条目时才允许流量。 - NetworkPolicyPeer 描述了允许流量进出(to/from)的对等节点。只有某些字段组合是允许的。 - ingress.from.ipBlock (IPBlock) - ipBlock 定义了特定 IPBlock 的策略。如果设置了此字段,则其他字段都不能设置。 - IPBlock 描述了一个允许进入 NetworkPolicySpec 的 podSelector 匹配的 Pod 的特定 CIDR(例如,“192.168.1.0/24”、“2001:db8::/64”)。 except 条目描述了不应包含在此规则中的 CIDR。 - ingress.from.ipBlock.cidr (string), required - cidr 是一个字符串,表示 IPBlock。有效示例如“192.168.1.0/24”或“2001:db8::/64”。 
- ingress.from.ipBlock.except ([]string) - 原子性:在合并期间将被替换 - except 是一个 CIDR 切片,不应包含在 IPBlock 中。有效示例如“192.168.1.0/24”或“2001:db8::/64”。如果 except 值超出 cidr 范围,将被拒绝。 
 
- ingress.from.namespaceSelector (LabelSelector) - namespaceSelector 使用集群范围的标签选择命名空间。此字段遵循标准的标签选择器语义;如果存在但为空,则选择所有命名空间。 - 如果还设置了 podSelector,则整个 NetworkPolicyPeer 会选择在 namespaceSelector 选择的命名空间中匹配 podSelector 的 Pod。否则,它会选择在命名空间中匹配 namespaceSelector 的所有 Pod。 
- ingress.from.podSelector (LabelSelector) - podSelector 是一个选择 Pod 的标签选择器。此字段遵循标准的标签选择器语义;如果存在但为空,则选择所有 Pod。 - 如果还设置了 namespaceSelector,则整个 NetworkPolicyPeer 会选择在 NamespaceSelector 选择的命名空间中匹配 podSelector 的 Pod。否则,它会选择在策略自身命名空间中匹配 podSelector 的 Pod。 
 
- ingress.ports ([]NetworkPolicyPort) - 原子性:在合并期间将被替换 - ports 是应可供此规则选择的 Pod 访问的端口列表。此列表中的每个条目都使用逻辑 OR 进行组合。如果此字段为空或缺失,则此规则匹配所有端口(流量不受端口限制)。如果此字段存在且至少包含一个条目,则此规则仅在流量匹配列表中的至少一个端口时才允许流量。 - NetworkPolicyPort 描述了允许流量通过的端口。 - ingress.ports.port (IntOrString) - port 表示给定协议上的端口。这可以是 Pod 上的数值端口或命名端口。如果未提供此字段,则匹配所有端口名称和数字。如果存在,则仅匹配指定协议和端口上的流量。 - IntOrString 是一种可以包含 int32 或 string 的类型。在 JSON 或 YAML 编组和解组时,它会产生或消耗内部类型。这允许您拥有一个例如可以接受名称或数字的 JSON 字段。 
- ingress.ports.endPort (int32) - endPort 指示如果设置了从 port 到 endPort 的端口范围(包含两端),则应允许策略通过。如果 port 字段未定义或 port 字段定义为命名(字符串)端口,则无法定义此字段。endPort 必须等于或大于 port。 
- ingress.ports.protocol (string) - protocol 表示流量必须匹配的协议(TCP、UDP 或 SCTP)。如果未指定,则此字段默认为 TCP。 
 
 
- egress ([]NetworkPolicyEgressRule) - 原子性:在合并期间将被替换 - egress 是应用于所选 Pod 的出口规则列表。如果不存在选择该 Pod 的 NetworkPolicies(且集群策略另外允许流量),或者流量匹配 NetworkPolicy 对象(其 podSelector 匹配该 Pod)中的至少一个出口规则,则允许出站流量。如果此字段为空,则此 NetworkPolicy 限制所有出站流量(仅用于确保其选择的 Pod 默认是隔离的)。此字段在 1.8 中为 Beta 级别。 - NetworkPolicyEgressRule 描述了允许从 NetworkPolicySpec 的 podSelector 匹配的 Pod 流出的特定流量集。流量必须同时匹配端口和目标。此类型在 1.8 中为 Beta 级别。 - egress.to ([]NetworkPolicyPeer) - 原子性:在合并期间将被替换 - to 是此规则选择的 Pod 的出站流量的目的地列表。此列表中的条目通过逻辑 OR 操作进行组合。如果此字段为空或缺失,则此规则匹配所有目的地(流量不受目的地限制)。如果此字段存在且至少包含一个条目,则此规则仅在流量至少匹配 to 列表中的一个条目时才允许流量。 - NetworkPolicyPeer 描述了允许流量进出(to/from)的对等节点。只有某些字段组合是允许的。 - egress.to.ipBlock (IPBlock) - ipBlock 定义了特定 IPBlock 的策略。如果设置了此字段,则其他字段都不能设置。 - IPBlock 描述了一个允许进入 NetworkPolicySpec 的 podSelector 匹配的 Pod 的特定 CIDR(例如,“192.168.1.0/24”、“2001:db8::/64”)。 except 条目描述了不应包含在此规则中的 CIDR。 - egress.to.ipBlock.cidr (string), required - cidr 是一个字符串,表示 IPBlock。有效示例如“192.168.1.0/24”或“2001:db8::/64”。 
- egress.to.ipBlock.except ([]string) - 原子性:在合并期间将被替换 - except 是一个 CIDR 切片,不应包含在 IPBlock 中。有效示例如“192.168.1.0/24”或“2001:db8::/64”。如果 except 值超出 cidr 范围,将被拒绝。 
 
- egress.to.namespaceSelector (LabelSelector) - namespaceSelector 使用集群范围的标签选择命名空间。此字段遵循标准的标签选择器语义;如果存在但为空,则选择所有命名空间。 - 如果还设置了 podSelector,则整个 NetworkPolicyPeer 会选择在 namespaceSelector 选择的命名空间中匹配 podSelector 的 Pod。否则,它会选择在命名空间中匹配 namespaceSelector 的所有 Pod。 
- egress.to.podSelector (LabelSelector) - podSelector 是一个选择 Pod 的标签选择器。此字段遵循标准的标签选择器语义;如果存在但为空,则选择所有 Pod。 - 如果还设置了 namespaceSelector,则整个 NetworkPolicyPeer 会选择在 NamespaceSelector 选择的命名空间中匹配 podSelector 的 Pod。否则,它会选择在策略自身命名空间中匹配 podSelector 的 Pod。 
 
- egress.ports ([]NetworkPolicyPort) - 原子性:在合并期间将被替换 - ports 是出站流量的目的地端口列表。此列表中的每个条目都使用逻辑 OR 进行组合。如果此字段为空或缺失,则此规则匹配所有端口(流量不受端口限制)。如果此字段存在且至少包含一个条目,则此规则仅在流量匹配列表中的至少一个端口时才允许流量。 - NetworkPolicyPort 描述了允许流量通过的端口。 - egress.ports.port (IntOrString) - port 表示给定协议上的端口。这可以是 Pod 上的数值端口或命名端口。如果未提供此字段,则匹配所有端口名称和数字。如果存在,则仅匹配指定协议和端口上的流量。 - IntOrString 是一种可以包含 int32 或 string 的类型。在 JSON 或 YAML 编组和解组时,它会产生或消耗内部类型。这允许您拥有一个例如可以接受名称或数字的 JSON 字段。 
- egress.ports.endPort (int32) - endPort 指示如果设置了从 port 到 endPort 的端口范围(包含两端),则应允许策略通过。如果 port 字段未定义或 port 字段定义为命名(字符串)端口,则无法定义此字段。endPort 必须等于或大于 port。 
- egress.ports.protocol (string) - protocol 表示流量必须匹配的协议(TCP、UDP 或 SCTP)。如果未指定,则此字段默认为 TCP。 
 
 
NetworkPolicyList
NetworkPolicyList 是 NetworkPolicy 对象的列表。
- apiVersion: networking.k8s.io/v1 
- kind: NetworkPolicyList 
- metadata (ListMeta) - 标准列表元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata 
- items ([]NetworkPolicy), required - items 是 schema 对象的列表。 
操作
get 读取指定的 NetworkPolicy
HTTP 请求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
参数
响应
200 (NetworkPolicy): OK
401: 未授权
list 列出或监视 NetworkPolicy 类型的对象
HTTP 请求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
参数
- namespace (在路径中): string,必填 
- allowWatchBookmarks (在查询中): boolean 
- continue (在查询中): string 
- fieldSelector (在查询中): string 
- labelSelector (在查询中): string 
- limit (在查询中): integer 
- pretty (在查询中): string 
- resourceVersion (在查询中): string 
- resourceVersionMatch (在查询中): string 
- sendInitialEvents (在查询中): boolean 
- timeoutSeconds (在查询中): integer 
- watch (在查询中): boolean 
响应
200 (NetworkPolicyList): OK
401: 未授权
list 列出或监视 NetworkPolicy 类型的对象
HTTP 请求
GET /apis/networking.k8s.io/v1/networkpolicies
参数
- allowWatchBookmarks (在查询中): boolean 
- continue (在查询中): string 
- fieldSelector (在查询中): string 
- labelSelector (在查询中): string 
- limit (在查询中): integer 
- pretty (在查询中): string 
- resourceVersion (在查询中): string 
- resourceVersionMatch (在查询中): string 
- sendInitialEvents (在查询中): boolean 
- timeoutSeconds (在查询中): integer 
- watch (在查询中): boolean 
响应
200 (NetworkPolicyList): OK
401: 未授权
create 创建一个 NetworkPolicy
HTTP 请求
POST /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
参数
- namespace (在路径中): string,必填 
- body: NetworkPolicy, required 
- dryRun (在查询中): string 
- fieldManager (在查询中): string 
- fieldValidation (在查询中): string 
- pretty (在查询中): string 
响应
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
202 (NetworkPolicy): Accepted
401: 未授权
update 替换指定的 NetworkPolicy
HTTP 请求
PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
参数
- name (在路径中): string,必填 - NetworkPolicy 的名称 
- namespace (在路径中): string,必填 
- body: NetworkPolicy, required 
- dryRun (在查询中): string 
- fieldManager (在查询中): string 
- fieldValidation (在查询中): string 
- pretty (在查询中): string 
响应
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
401: 未授权
patch 部分更新指定的 NetworkPolicy
HTTP 请求
PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
参数
- name (在路径中): string,必填 - NetworkPolicy 的名称 
- namespace (在路径中): string,必填 
- body: Patch,必需 
- dryRun (在查询中): string 
- fieldManager (在查询中): string 
- fieldValidation (在查询中): string 
- force (在查询中): boolean 
- pretty (在查询中): string 
响应
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
401: 未授权
delete 删除一个 NetworkPolicy
HTTP 请求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
参数
- name (在路径中): string,必填 - NetworkPolicy 的名称 
- namespace (在路径中): string,必填 
- body: DeleteOptions 
- dryRun (在查询中): string 
- gracePeriodSeconds (在查询中): integer 
- ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean 
- pretty (在查询中): string 
- propagationPolicy (在查询中): string 
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection 删除 NetworkPolicy 集合
HTTP 请求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
参数
- namespace (在路径中): string,必填 
- body: DeleteOptions 
- continue (在查询中): string 
- dryRun (在查询中): string 
- fieldSelector (在查询中): string 
- gracePeriodSeconds (在查询中): integer 
- ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean 
- labelSelector (在查询中): string 
- limit (在查询中): integer 
- pretty (在查询中): string 
- propagationPolicy (在查询中): string 
- resourceVersion (在查询中): string 
- resourceVersionMatch (在查询中): string 
- sendInitialEvents (在查询中): boolean 
- timeoutSeconds (在查询中): integer 
响应
200 (Status): OK
401: 未授权
本页面是自动生成的。
如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。