Контейнер init с kubectl get pod
используется для получения статуса готовности другого модуля.
После включения Egress NetworkPolicy контейнер init не может получить доступ к API Kubernetes: невозможно Unable to connect to the server: dial tcp 10.96.0.1:443: i/o timeout
. CNI это Калико.
Было опробовано несколько правил, но ни одно из них не работает (IP-адреса хоста службы и главного хоста, разные маски CIDR):
...
egress:
- to:
- ipBlock:
cidr: 10.96.0.1/32
ports:
- protocol: TCP
port: 443
...
или используя пространство имен (пространства имен по умолчанию и пространства имен kube-system):
...
egress:
- to:
- namespaceSelector:
matchLabels:
name: default
ports:
- protocol: TCP
port: 443
...
Похоже, что правила ipBlock
просто не работают, а правила пространства имен не работают, потому что kubernetes api - это нестандартный модуль.
Это можно настроить? Кубернетес 1.9.5, Калико 3.1.1.
Проблема все еще существует с GKE 1.13.7-gke.8 и ситцем 3.2.7