NetworkPolicy
Документация по концепции NetworkPolicy
-
Если вы хотите управлять потоком трафика на уровне IP-адресов или портов (уровень 3 или 4 модели OSI), NetworkPolicy позволяет задавать правила потока трафика внутри кластера, а также между Pod и внешним миром. Кластер должен использовать сетевой плагин, поддерживающий применение NetworkPolicy.
- Предварительные требования
- Два типа изоляции Pod
- Ресурс NetworkPolicy
- Поведение селекторов <code>to</code> и <code>from</code>
- Политики по умолчанию
- Фильтрация сетевого трафика
- Выбор диапазона портов
- Выбор нескольких пространств имён по метке
- Выбор пространства имён по его имени
- Жизненный цикл Pod
- NetworkPolicy и Pod с <code>hostNetwork</code>
- Что нельзя сделать с сетевыми политиками (по крайней мере, пока)
- Влияние NetworkPolicy на существующие подключения
- Что дальше
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
NetworkPolicy
NetworkPolicy описывает, какой сетевой трафик разрешён для набора Pod
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее представление и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Не может быть изменено. Записывается в CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataObjectMeta |
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
specNetworkPolicySpec |
spec представляет спецификацию желаемого поведения этой NetworkPolicy. |
NetworkPolicySpec
NetworkPolicySpec содержит спецификацию NetworkPolicy
| Поле | Описание |
|---|---|
egressNetworkPolicyEgressRule array |
egress — список правил для исходящего трафика, применяемых к выбранным Pod. Исходящий трафик разрешён, если ни одна NetworkPolicy не выбирает Pod (и политика кластера в остальном разрешает этот трафик) ИЛИ если трафик соответствует хотя бы одному правилу egress среди всех объектов NetworkPolicy, чей podSelector выбирает этот Pod. Если это поле пусто, данная NetworkPolicy ограничивает весь исходящий трафик (и служит исключительно для того, чтобы выбранные ею Pod по умолчанию были изолированы). Это поле имеет статус beta в версии 1.8. |
ingressNetworkPolicyIngressRule array |
ingress — список правил для входящего трафика, применяемых к выбранным Pod. Трафик разрешён для Pod, если ни одна NetworkPolicy не выбирает Pod (и политика кластера в остальном разрешает этот трафик), ИЛИ если источник трафика — локальный узел Pod, ИЛИ если трафик соответствует хотя бы одному правилу ingress среди всех объектов NetworkPolicy, чей podSelector выбирает этот Pod. Если это поле пусто, данная NetworkPolicy не разрешает никакой трафик (и служит исключительно для того, чтобы выбранные ею Pod по умолчанию были изолированы). |
podSelectorLabelSelector |
podSelector выбирает Pod, к которым применяется этот объект NetworkPolicy. Массив правил применяется ко всем Pod, выбранным этим полем. Пустой селектор выбирает все Pod в пространстве имён политики. Несколько сетевых политик могут выбирать один и тот же набор Pod. В этом случае правила ingress для каждой из них объединяются. Это поле необязательное. Если оно не указано, по умолчанию используется пустой селектор. |
policyTypesstring array |
policyTypes — список типов правил, к которым относится NetworkPolicy. Допустимые варианты: ["Ingress"], ["Egress"] или ["Ingress", "Egress"]. Если это поле не указано, значение по умолчанию определяется наличием правил ingress или egress: политики, содержащие раздел egress, считаются влияющими на исходящий трафик, а все политики (независимо от наличия раздела ingress) считаются влияющими на входящий трафик. Чтобы создать политику только для исходящего трафика, необходимо явно указать policyTypes [ "Egress" ]. Аналогично, чтобы создать политику, запрещающую весь исходящий трафик, необходимо указать в policyTypes значение, включающее "Egress" (поскольку такая политика не будет содержать раздел egress и в противном случае для неё по умолчанию будет использоваться только [ "Ingress" ]). Это поле имеет статус beta в версии 1.8. |
NetworkPolicyList
NetworkPolicyList — это список объектов NetworkPolicy.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее представление и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
items *NetworkPolicy array |
items — список объектов схемы. |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Не может быть изменено. Записывается в CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataListMeta |
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
IPBlock
IPBlock описывает определённый CIDR (например, "192.168.1.0/24","2001:db8::/64"), разрешённый для Pod, выбранных с помощью podSelector в NetworkPolicySpec. Запись except задаёт CIDR, которые не должны включаться в это правило.
| Поле | Описание |
|---|---|
cidr *string |
cidr — строка, представляющая IPBlock. Допустимые примеры: "192.168.1.0/24" или "2001:db8::/64". |
exceptstring array |
except — список CIDR, которые не должны включаться в IPBlock. Допустимые примеры: "192.168.1.0/24" или "2001:db8::/64". Значения except будут отклонены, если они находятся за пределами диапазона cidr. |
NetworkPolicyEgressRule
NetworkPolicyEgressRule описывает определённый набор трафика, который разрешено отправлять из Pod, выбранных с помощью podSelector в NetworkPolicySpec. Трафик должен соответствовать и портам, и полю to. Этот тип имеет статус beta в версии 1.8.
| Поле | Описание |
|---|---|
portsNetworkPolicyPort array |
ports — список портов назначения для исходящего трафика. Каждый элемент этого списка объединяется логическим оператором ИЛИ. Если это поле пусто или отсутствует, правило соответствует всем портам (трафик не ограничен по портам). Если поле указано и содержит хотя бы один элемент, правило разрешает трафик, только если он соответствует хотя бы одному порту из списка. |
toNetworkPolicyPeer array |
to — список адресатов для исходящего трафика Pod, выбранных этим правилом. Элементы списка объединяются логическим оператором ИЛИ. Если это поле пусто или отсутствует, правило соответствует всем адресатам (трафик не ограничен по адресу назначения). Если поле указано и содержит хотя бы один элемент, правило разрешает трафик, только если он соответствует хотя бы одному элементу списка to. |
NetworkPolicyIngressRule
NetworkPolicyIngressRule описывает определённый набор трафика, разрешённого для Pod, выбранных с помощью podSelector в NetworkPolicySpec. Трафик должен соответствовать и портам, и полю from.
| Поле | Описание |
|---|---|
fromNetworkPolicyPeer array |
from — список источников, которым разрешён доступ к Pod, выбранным этим правилом. Элементы списка объединяются логическим оператором ИЛИ. Если это поле пусто или отсутствует, правило соответствует всем источникам (трафик не ограничен по источнику). Если поле указано и содержит хотя бы один элемент, правило разрешает трафик, только если он соответствует хотя бы одному элементу списка from. |
portsNetworkPolicyPort array |
ports — список портов, доступ к которым разрешён на Pod, выбранных этим правилом. Каждый элемент списка объединяется логическим оператором ИЛИ. Если это поле пусто или отсутствует, правило соответствует всем портам (трафик не ограничен по портам). Если поле указано и содержит хотя бы один элемент, правило разрешает трафик, только если он соответствует хотя бы одному порту из списка. |
NetworkPolicyPeer
NetworkPolicyPeer описывает узел, которому разрешено отправлять трафик или получать его. Допустимы только определённые сочетания полей.
| Поле | Описание |
|---|---|
ipBlockIPBlock |
ipBlock задаёт политику для определённого IPBlock. Если это поле задано, два других поля задавать нельзя. |
namespaceSelectorLabelSelector |
namespaceSelector выбирает пространства имён с помощью меток уровня кластера. Это поле соответствует стандартной семантике селектора меток; если оно задано, но пусто, выбираются все пространства имён. Если также задан podSelector, объект NetworkPolicyPeer в целом выбирает Pod, соответствующие podSelector, в пространствах имён, выбранных с помощью namespaceSelector. В противном случае выбираются все Pod в пространствах имён, выбранных с помощью namespaceSelector. |
podSelectorLabelSelector |
podSelector — селектор меток, выбирающий Pod. Это поле соответствует стандартной семантике селектора меток; если оно задано, но пусто, выбираются все Pod. Если также задан namespaceSelector, объект NetworkPolicyPeer в целом выбирает Pod, соответствующие podSelector, в пространствах имён, выбранных с помощью namespaceSelector. В противном случае выбираются Pod, соответствующие podSelector, в собственном пространстве имён политики. |
NetworkPolicyPort
NetworkPolicyPort описывает порт, на котором разрешён трафик.
| Поле | Описание |
|---|---|
endPortinteger |
endPort указывает, что политика должна разрешать диапазон портов от port до endPort включительно, если это поле задано. Это поле нельзя задавать, если поле port не задано или если в поле port указано имя порта (строка). Значение endPort должно быть равно port или больше него. |
port |
port — порт для указанного протокола. Это может быть числовой или именованный порт Pod. Если это поле не задано, правило соответствует всем именам и номерам портов. Если поле задано, будет учитываться только трафик, соответствующий указанным протоколу И порту. |
protocolstring |
protocol — протокол (TCP, UDP или SCTP), которому должен соответствовать трафик. Если поле не задано, по умолчанию используется TCP. Возможные значения перечисления: - `"SCTP"` — протокол SCTP. - `"TCP"` — протокол TCP. - `"UDP"` — протокол UDP. |
© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/networking/network-policy-v1/