Сетевые политики, разработанные Kubernetes, ограничивают доступ к подам. Это эквивалентно межсетевому экрану на уровне приложений для повышения сетевой безопасности. Возможности, поддерживаемые сетевыми политиками, зависят от возможностей сетевых дополнений кластера.
По умолчанию, если в пространстве имён нет политики, поды в этом пространстве имён принимают трафик из любого источника и отправляют трафик в любой пункт назначения.
Для сетевых политик доступны следующие селекторы:
- namespaceSelector: выбирает определённые пространства имён, для которых все поды разрешены в качестве источников входящего трафика или пунктов назначения исходящего трафика.
- podSelector: выбирает определённые поды в том же пространстве имён, что и сетвая политика, которые должны быть разрешены в качестве источников входящего трафика или пунктов назначения исходящего трафика.
- IPBlock: выбирает определённые IP‑блоки, разрешённые в качестве источников входящего трафика или пунктов назначения исходящего трафика.
Связи между сетевыми политиками и типами кластеров
Тип кластера | CCE Standard Cluster | CCE Turbo Cluster |
|---|---|---|
Сетевая модель | Tunnel | Cloud Native Network 2.0 |
NetworkPolicy | Включено по умолчанию | Отключено по умолчанию (Чтобы использовать сетевые политики, включите DataPlane V2 при создании кластера.) |
Реализация плоскости данных | OpenvSwitch | eBPF |
Версия кластера для входящих правил | Все версии | v1.27.16-r10, v1.28.15-r0, v1.29.10-r0, v1.30.6-r0, or later |
Версия кластера для исходящих правил | v1.23 and later | |
Селектор для входящих правил | namespaceSelector podSelector | namespaceSelector podSelector IPBlock |
Селектор для исходящих правил | namespaceSelector podSelector IPBlock | |
Поддерживаемые ОС | EulerOS CentOS HCE OS 2.0 | HCE OS 2.0 |
Сетевые политики IPv6 | Не поддерживается | Поддерживается |
Защищённые контейнеры | Не поддерживается | Не поддерживается |
Объём IPBlock | Не ограничено | CIDR‑блоки и IP‑адреса узлов в контейнерном CIDR‑блоке не могут быть сконфигурированы. |
Ограничить доступ к ClusterIP через метки рабочей нагрузки | Не поддерживается | Поддерживается |
Ограничить внутренний CIDR‑блок облачного сервера 100.125.0.0/16 | Поддерживается | Не поддерживается |
SCTP | Не поддерживается | Не поддерживается |
Всегда разрешать доступ к подам на узле с других узлов | Поддерживается | Поддерживается |
Настроить EndPort в сетевых политиках | Не поддерживается | Не поддерживается |
- CCE DataPlane V2 выпускается с ограничениями. Чтобы использовать эту функцию, отправьте сервис‑заявку в CCE.
- Защищённые контейнеры (например Kata в качестве среды выполнения) не поддерживаются сетевыми политиками.
- Если вы обновляете CCE стандартный кластер с туннельной сетью до версии, поддерживающей правила egress в режиме in-place, правила не будут работать, потому что ОС узла не обновлена. В этом случае сбросьте узел.
- Когда сетевая политика включена для кластера, использующего туннельную сеть, IP‑адрес источника пода, обращающегося к CIDR‑блоку Service, будет записан в необязательное поле данных о reported IP address. Это позволяет настроить правила сетевой политики на целевом поде, учитывая IP‑адрес источника пода.
Использование входящих правил через YAML
- Сценарий 1: Использовать сетевую политику для ограничения доступа к поду только подами с определёнными метками.
Рисунок 1 podSelector

Под с меткой role=db разрешает доступ к своему порту 6379 только подам с меткой role=frontend. Чтобы выполнить это, выполните следующие операции:
- Создайте access-demo1.yaml файл.vim access-demo1.yaml
Содержание файла:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: access-demo1namespace: defaultspec:podSelector: # The rule takes effect for pods with the role=db label.matchLabels:role: dbingress: # This is an ingress rule.- from:- podSelector: # Only allow the access of the pods labeled with role=frontend.matchLabels:role: frontendports: # Only TCP can be used to access port 6379.- protocol: TCPport: 6379 - Выполните следующую команду, чтобы создать сетевую политику на основе access-demo1.yaml файл:kubectl apply -f access-demo1.yaml
Ожидаемый вывод:
networkpolicy.networking.k8s.io/access-demo1 created
- Создайте access-demo1.yaml файл.
- Сценарий 2: Использовать сетевую политику для ограничения доступа к поду только подами в определённом пространстве имён.
Рисунок 2 namespaceSelector

Под с меткой role=db разрешает доступ к своему порту 6379 только подам в пространстве имён с меткой project=myproject. Чтобы выполнить это, выполните следующие операции:
- Создайте access-demo2.yaml файл.vim access-demo2.yaml
Содержание файла:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: access-demo2spec:podSelector: # The rule takes effect for pods with the role=db label.matchLabels:role: dbingress: # This is an ingress rule.- from:- namespaceSelector: # Only allow the access of the pods in the namespace labeled with project=myproject.matchLabels:project: myprojectports: # Only TCP can be used to access port 6379.- protocol: TCPport: 6379 - Выполните следующую команду, чтобы создать сетевую политику на основе access-demo2.yaml file:kubectl apply -f access-demo2.yaml
Expected output:
networkpolicy.networking.k8s.io/access-demo2 created
- Создайте access-demo2.yaml файл.
Использование правил Egress через YAML
Кластеры версии v1.23 и более поздних, использующие туннельную сеть, поддерживают правила egress. Поддерживаются только узлы с CentOS 7.x или HCE OS 2.0.
Правила egress поддерживаются только кластерами CCE Turbo версии v1.27.16-r10, v1.28.15-r0, v1.29.10-r0, v1.30.6-r0 и более поздними при включённом DataPlane V2. Кроме того, узлы в этих кластерах должны работать только под HCE OS 2.0.
- Сценарий 1: Использовать сетевую политику для ограничения доступа Под к определённым адресам.
Figure 3 IPBlock

Под с меткой role=db разрешает доступ только к CIDR‑блоку 172.16.0.0/16, исключая 172.16.0.40/32 внутри него. Для этого выполните следующие операции:
- Создайте access-demo3.yaml файл.vim access-demo3.yaml
Содержимое файла:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: access-demo3namespace: defaultspec:policyTypes: # Must be specified for an egress rule.- EgresspodSelector: # The rule takes effect for pods with the role=db label.matchLabels:role: dbegress: # Egress rule- to:- ipBlock:cidr:172.16.0.0/16 # Allow access to this CIDR block in the outbound direction.except:- 172.16.0.40/32 # Block access to this address in the CIDR block. - Выполните следующую команду, чтобы создать сетевую политику на основе access-demo3.yaml file:kubectl apply -f access-demo3.yaml
Expected output:
networkpolicy.networking.k8s.io/access-demo3 created
- Создайте access-demo3.yaml файл.
- Сценарий 2: Использовать сетевую политику, чтобы ограничить доступ к Поду только Подами с определёнными метками, и этот Под может получать доступ только к определённым Подам.
Figure 4 Использование как ingress, так и egress

Под с меткой role=db разрешает доступ к порту 6379 только от Подов с меткой role=frontend, и этот Под может получать доступ только к Подам с меткой role=web. Вы можете использовать то же правило для настройки как ingress, так и egress в сетевой политике. Для этого выполните следующие операции:
- Создайте access-demo4.yaml файл.vim access-demo4.yaml
Содержимое файла:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: access-demo4namespace: defaultspec:policyTypes:- Ingress- EgresspodSelector: # The rule takes effect for pods with the role=db label.matchLabels:role: dbingress: # This is an ingress rule.- from:- podSelector: # Only allow the access of the pods labeled with role=frontend.matchLabels:role: frontendports: # Only TCP can be used to access port 6379.- protocol: TCPport: 6379egress: # Egress rule- to:- podSelector: # Only pods with the role=web label can be accessed.matchLabels:role: web - Выполните следующую команду, чтобы создать сетевую политику на основе access-demo4.yaml file:kubectl apply -f access-demo4.yaml
Expected output:
networkpolicy.networking.k8s.io/access-demo4 created
- Создайте access-demo4.yaml файл.
Создание сетевой политики в консоли
- Войдите в консоль CCE и нажмите название кластера, чтобы перейти в консоль кластера.
- Выберите Политики в навигационной панели, нажмите Сетевые политики вкладку и нажмите Создать сетевую политику в правом верхнем углу.
- Имя политики: Укажите имя сетевой политики.
- Пространство имен: Выберите пространство имен, в котором будет применяться сетевая политика.
- Селектор: Введите метку, выберите Под, к которому будет привязка, и нажмите Добавить. Вы также можете нажать Reference Workload Label чтобы использовать метку существующей рабочей нагрузки.
- Входящее правило: Нажмите
чтобы добавить входящее правило. Подробную информацию о параметрах см. в Table 1.Table 1 Добавление входящего правила Параметр
Описание
Протокол и порт
Выберите тип протокола и порт. В настоящее время поддерживаются TCP и UDP.
Исходный CIDR‑блок
Для кластеров версии v1.27.16-r10, v1.28.15-r0, v1.29.10-r0, v1.30.6-r0 и более поздних версий с включённым DataPlane V2 можно настроить исходный CIDR‑блок.
Указанный исходный CIDR‑блок разрешает трафик из целевого CIDR‑блока (можно указать несколько исключающих CIDR‑блоков). Разделяйте целевой и исключающие CIDR‑блоки вертикальной чертой (|). Если указано несколько исключающих CIDR‑блоков, разделяйте их запятыми (,). Например, 172.17.0.0/16|172.17.1.0/24,172.17.2.0/24 означает, что доступен 172.17.0.0/16, но недоступны 172.17.1.0/24 и 172.17.2.0/24.
Исходное пространство имен
Выберите пространство имен, объекты которого могут быть доступны. Если параметр не указан, объект принадлежит тому же пространству имен, что и текущая политика.
Исходная метка Пода
Разрешить доступ к Подам с этой меткой. Если параметр не указан, доступ возможен ко всем Подам в пространстве имен.
- Исходящее правило: Нажмите
чтобы добавить исходящее правило. Подробную информацию о параметрах см. в Table 2.Table 2 Добавление исходящего правила Параметр
Описание
Протокол и порт
Выберите тип протокола и порт. В настоящее время поддерживаются TCP и UDP. Если параметр не указан, тип протокола не ограничивается.
Целевой CIDR‑блок
Позволяет направлять запросы в указанный CIDR‑блок (и не в исключающие CIDR‑блоки). Разделяйте целевой и исключающие CIDR‑блоки вертикальной чертой (|). Если указано несколько исключающих CIDR‑блоков, разделяйте их запятыми (,). Например, 172.17.0.0/16|172.17.1.0/24,172.17.2.0/24 означает, что доступен 172.17.0.0/16, но недоступны 172.17.1.0/24 и 172.17.2.0/24.
Целевое пространство имен
Выберите пространство имен, объекты которого могут быть доступны. Если параметр не указан, объект принадлежит тому же пространству имен, что и текущая политика.
Целевая метка Пода
Разрешить доступ к pod'ам с этой меткой. Если этот параметр не указан, доступ будет разрешен ко всем pod'ам в пространстве имён.
- Нажмите OK.
- Взаимосвязи между сетевыми политиками и типами кластера
- Использование правил Ingress через YAML
- Использование правил Egress через YAML
- Создание сетевой политики на Консоли