すべてのプロダクト
Search
ドキュメントセンター

:ECI でのネットワークポリシーの使用

最終更新日:Apr 04, 2026

ACK One 登録済みクラスターのネットワークポリシーを使用すると、IP アドレスまたはポートレベルで特定のアプリケーションのネットワークトラフィックを制御できます。このトピックでは、登録済みクラスターでネットワークポリシーを使用する方法と、一般的なユースケースの概要を説明します。

前提条件

  • バージョン 1.20.0 以降を実行している自己管理型 Kubernetes クラスター。

  • ACK One 登録済みクラスターを作成し、自己管理型 Kubernetes クラスターを ACK One 登録済みクラスターに接続していること。詳細については、「ACK One 登録済みクラスターの作成」をご参照ください。

注意事項

  • ネットワークポリシー機能は、ACK One 登録済みクラスター内の Elastic Container Instance (ECI) Pod でのみサポートされています。

  • ネットワークポリシーは IPv6 アドレスをサポートしていません。

  • ネットワークポリシーは endPort フィールドをサポートしていません。

  • ネットワークポリシールールでは labelSelector を使用して名前空間または Pod を選択できますが、ポリシーの数が多いとルールの適用が遅れ、クラスター管理が複雑になる可能性があります。そのため、クラスター内で使用するネットワークポリシーは 100 未満にすることを推奨します。

ステップ1:ネットワークポリシーの有効化

  1. Poseidon コンポーネントをインストールします。

    1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

    2. クラスターリスト ページで、目的のクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[コンポーネントとアドオン] をクリックします。

    3. アドオン管理 ページで、ネットワーク タブをクリックします。[Poseidon] カードで、インストール をクリックします。

    4. [Poseidon のインストール] パネルで、ECI インスタンスにネットワークポリシーを有効化する を選択し、OK をクリックします。

  2. ack-virtual-node コンポーネントをインストールします。

    1. アドオン管理 ページで、コアコンポーネント タブをクリックします。ack-virtual-node カードで、インストール をクリックします。

    2. [ack-virtual-node のインストール] パネルで、ネットワーク構成に基づいて VPC イントラネットアクセスを有効にするかどうか を選択または選択解除し、次に OK をクリックします。

      コンポーネントがインストールされると、カードの右上に インストール済み ステータスが表示されます。

    説明

    [ack-virtual-node] コンポーネントがすでにインストールされている場合は、バージョン 2.10.0 以降にアップグレードしてください。詳細については、「コンポーネントの管理」をご参照ください。

ステップ2:ネットワークポリシーの使用

  1. 次のコマンドを実行して、ネットワークポリシーを作成します。このポリシーは default 名前空間に適用され、app: busybox ラベルを持つ Pod が TCP ポート 80 で app: nginx ラベルを持つ Pod にトラフィックを送信することを許可します。他のポリシーで許可されていない限り、nginx Pod への他のすべてのトラフィックは拒否されます。

    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: test-network-policy
      namespace: default
    spec:
      podSelector:
        matchLabels:
          app: nginx
      policyTypes:
        - Ingress
      ingress:
        - from:
            - podSelector:
                matchLabels:
                  app: busybox
          ports:
            - protocol: TCP
              port: 80
    EOF
  2. 次のコマンドを実行して、app: nginx ラベルを持つアプリケーションを作成します。

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: nginx
      name: nginx-deployment
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            alibabacloud.com/eci: 'true'
            app: nginx
        spec:
          containers:
            - image: 'registry.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2'
              imagePullPolicy: IfNotPresent
              name: nginx
              ports:
                - containerPort: 80
                  protocol: TCP
              resources:
                limits:
                  cpu: 500m
    
    EOF
  3. 次のコマンドを実行して Nginx アプリケーションのステータスを確認し、Pod の IP アドレスを記録します。

    kubectl get pod -owide | grep nginx-deployment

    予想される出力:

    NAME                                   READY   STATUS    RESTARTS   AGE   IP                NODE                     NOMINATED NODE   READINESS GATES
    nginx-deployment-698d746d4c-nXXXXXXx   1/1     Running   0          35s   192.168.XXX.XXX   cn-heyuan.10.108.XX.XX   <none>           <none>
  4. 次のコマンドを実行して、app: busybox ラベルを持つアプリケーションを作成します。

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: busybox
      name: busybox-deployment
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            alibabacloud.com/eci: 'true'
            app: busybox
        spec:
          containers:
            - args:
                - '-c'
                - ' sleep 360000000'
              command:
                - /bin/sh
              image: 'registry-cn-hangzhou.ack.aliyuncs.com/dev/busybox:1'
              imagePullPolicy: IfNotPresent
              name: busybox
              ports:
                - containerPort: 80
                  protocol: TCP
              resources:
                limits:
                  cpu: 500m
    EOF
  5. busybox コンテナにログインし、次のコマンドを実行して Nginx Pod の IP アドレスにアクセスします。

    wget http://192.168.XXX.XXX  

    予想される出力:

    Connecting to 192.168.XXX.XXX:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 612 [text/html]
    Saving to: 'index.html'
    
    index.html                                               100%[================================================================================================================================>]     612  --.-KB/s    in 0s      
    
    2024-11-19 20:12:09 (1.66 MB/s) - 'index.html' saved [612/612]

    100% の進捗は、Nginx サービスにアクセス可能であることを示します。

  6. 次のコマンドを実行して、app: busybox-demo ラベルを持つアプリケーションを作成します。

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: busybox-demo
      name: busybox-deployment-demo
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: busybox-demo
      template:
        metadata:
          labels:
            alibabacloud.com/eci: 'true'
            app: busybox-demo
        spec:
          containers:
            - args:
                - '-c'
                - ' sleep 360000000'
              command:
                - /bin/sh
              image: 'registry-cn-hangzhou.ack.aliyuncs.com/dev/busybox:1'
              imagePullPolicy: IfNotPresent
              name: busybox-demo
              ports:
                - containerPort: 80
                  protocol: TCP
              resources:
                limits:
                  cpu: 500m
    EOF
  7. busybox-demo コンテナにログインし、次のコマンドを実行して Nginx Pod の IP アドレスにアクセスします。

    wget http://192.168.XXX.XXX

    予想される出力:

    Connecting to 192.168.XXX.XXX:80... 
    failed: Connection timed out.

    接続タイムアウトは、ネットワークポリシーが期待どおりに機能していることを示します。