1

以下の 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
4

1 に答える 1