説明
NetworkPolicy の podSelector が実際の Pod ラベルと一致しないと、期待したネットワーク制限が適用されない場合があります。ポリシーは自身の名前空間の Pod を選択し、空の selector はその名前空間のすべての Pod を選択します。
将来作成する Pod のためのポリシーが、一時的に何も選択しないことは有効な場合があります。実際の効果を判断するには、ネットワークプラグインの対応と、対象 Pod に適用されるすべてのポリシーを確認する必要があります。
想定される影響
- 意図した Pod が隔離されず、想定より広い通信が許可される場合があります。
- 誤った対象を選ぶと正常な通信が途切れる場合があります。
対処方法
- ポリシーの名前空間、podSelector、実際の Pod ラベルを合わせてください。matchLabels または matchExpressions の条件全体を確認してください。
- 対応するネットワークプラグインで policyTypes、ingress、egress を構成し、必要な接続が成功し、不要な接続が失敗するか試してください。複数のポリシーの許可は合算される場合があります。
例
両方とも許可ルールを持たない Ingress ポリシーです。同じ名前空間の実際の Pod を確認してください。別のポリシーが許可する受信通信は引き続き許可される場合があります。
変更前
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
spec:
podSelector:
matchLabels:
app: rarelabel
policyTypes:
- Ingress
app=rarelabel の Pod を選択します。該当する Pod がなければ、現在の適用対象はありません。
変更後
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
app=nginx の Pod を選択します。実際に Pod が存在し、対応プラグインがポリシーを適用する必要があります。