Я установил Calico на EKS из здесь.
У меня есть два пространства имен, foo и bar, оба помечены меткой «цель» и содержат по одному модулю приложения каждое.
Когда я импортирую следующую политику только для Ingress в пространство имен foo, она работает точно так, как ожидалось; другие тестовые модули не могут подключиться к foo-app, но bar-app может.
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: foo
namespace: foo
spec:
podSelector:
matchLabels:
app: foo-app
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
purpose: bar
- from:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 53
- protocol: UDP
port: 53
Однако, когда я импортирую политику, содержащую правила входа и выхода, она полностью отключает сеть для модуля. Я больше не могу пинговать IP-адрес модуля foo-app из bar-app.
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: foo
namespace: foo
spec:
podSelector:
matchLabels:
app: foo-app
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
purpose: bar
- from:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 53
- protocol: UDP
port: 53
egress:
- to:
- namespaceSelector:
matchLabels:
purpose: bar
- to:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 53
- protocol: UDP
port: 53
После удаления и систематического повторного добавления частей политики именно добавление namespaceSelector
записи в исходящих данных нарушает ее.
В кластере нет других сетевых политик.
Если нет прямо очевидной причины, почему это происходит; кроме обхода правил netfilter на рабочих узлах: есть ли эффективный способ отладить это?
0.0.0.0/0
? Это то же самое, что не создаватьNetworkPolicy
. Я не знаю, почему он иногда блокируется, потому что этого не должно быть. - person suren   schedule 02.03.2020