以下の NetworkPolicy を使用して HTTP および HTTPS ポートでの送信を許可していますwget https://google.com
が、ネットワーク ポリシーが適用されていると実行が機能しません。ドメイン名は解決されますが (DNS エグレス ルールは機能します)、外部ホストへの接続がタイムアウトします。
ネットワーク ポリシー コントローラーに問題がある場合に備えて、cilium を使用した minikube と azure-npm を使用した Azure を試しましたが、どちらでも同じように動作します。DNS エグレスに同じ方法を使用しているため (これは機能します)、混乱していますが、これは他のポートでは失敗します。
HTTP/HTTPS ポートでの送信を妨げているのは何ですか?
Kubernetes バージョン 1.11.5
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
name: my-netpolicy
spec:
egress:
- ports:
- port: 53
protocol: UDP
- port: 53
protocol: TCP
- ports:
- port: 443
protocol: UDP
- port: 443
protocol: TCP
- port: 80
protocol: UDP
- port: 80
protocol: TCP
podSelector:
matchLabels:
my-label: my-app
(はい、UDP ルールはおそらく不要ですが、ここですべてを試してください)
wget
( Google/etc. が Azure IP をブロックする場合に備えて、プライベート サーバーでも試しましたが、同じ結果です)
(「なぜ」、同じ結果であるため、イングレスルールの一致も試みました)
kubectl describe
ネットワーク ポリシー:
Name: my-netpolicy
Namespace: default
Created on: 2019-01-21 19:00:04 +0000 UTC
Labels: ...
Annotations: <none>
Spec:
PodSelector: ...
Allowing ingress traffic:
To Port: 8080/TCP
From: <any> (traffic not restricted by source)
----------
To Port: https/UDP
To Port: https/TCP
To Port: http/TCP
To Port: http/UDP
From: <any> (traffic not restricted by source)
Allowing egress traffic:
To Port: 53/UDP
To Port: 53/TCP
To: <any> (traffic not restricted by source)
----------
To Port: https/UDP
To Port: https/TCP
To Port: http/UDP
To Port: http/TCP
To: <any> (traffic not restricted by source)
Policy Types: Ingress, Egress
最小限の再現可能な例:
apiVersion: v1
kind: Pod
metadata:
name: netpolicy-poc-pod
labels:
name: netpolicy-poc-pod
spec:
containers:
- name: poc
image: ubuntu:18.04
command: ["bash", "-c", "while true; do sleep 1000; done"]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: netpolicy-poc
spec:
podSelector:
matchLabels:
name: netpolicy-poc-pod
egress:
- ports:
- port: 80
protocol: UDP
- port: 80
protocol: TCP
- port: 443
protocol: UDP
- port: 443
protocol: TCP
- port: 53
protocol: UDP
- port: 53
protocol: TCP
ingress: []
それで:
kubectl exec -it netpolicy-poc /bin/bash
apt update
apt install wget -y
wget https://google.com