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

Elastic Container Instance:FAQ

最終更新日:Dec 28, 2024

このトピックでは、セルフマネージド Kubernetes クラスターに VNode をデプロイしてエラスティックコンテナインスタンスを使用する場合によく寄せられる質問について説明します。

クラウドサービスはオンプレミス Pod の IP アドレスにどのようにアクセスしますか?

Express Connect 回線を使用してクラウドネットワークとオンプレミスネットワークを接続する場合、クラウドサービスとオンプレミスサービスは、Border Gateway Protocol (BGP) を使用してお互いからルーティングルールを学習できます。その後、オンプレミス機器は BGP を使用して Pod の IP アドレスをクラウドサービスにブロードキャストできます。その結果、クラウドサービスはオンプレミス Pod の IP アドレスにアクセスできます。詳細については、BGP の設定を参照してください。

オンプレミスサービスはクラウド Pod の IP アドレスにどのようにアクセスしますか?

Express Connect 回線を使用してクラウドネットワークとオンプレミスネットワークを接続する場合、クラウドサービスとオンプレミスサービスは、BGP を使用してお互いからルーティングルールを学習できます。クラウドコントローラーマネージャー (CCM) をデプロイして、クラウド Pod の IP アドレスを仮想プライベートクラウド (VPC) ルートテーブルに自動的に同期できます。CCM の詳細については、クラウドコントローラーマネージャーを参照してください。

セルフマネージドクラスターまたはオンプレミスクラスターに CCM をデプロイした後、Kubernetes Pod のルート IP アドレスを VPC ルートテーブルに同期できます。CCM をデプロイするときは、次の点に注意してください。

  • Kubernetes クラスターノードの providerID 値の形式を <region-id>.<ecs-id> 形式に変更します。例: cn-shanghai.i-ankb8zjh2nzchf*******

  • クラスターノードの Pod IP アドレスがすべてノードの Pod CIDR ブロック内にあることを確認します。たとえば、Calico IPAM 構成ファイルを host-local タイプとして構成する必要があります。この構成では、Kubernetes クラスターノードの Pod CIDR フィールドが Kubernetes API から取得されるように指定します。これにより、クラスターノードのすべての Pod IP アドレスがノードの Pod CIDR ブロック内にあることが保証されます。

    ノードの仕様データで Pod CIDR ブロックを確認できます。

    spec:
      podCIDR: 172.23.XX.0/26
      podCIDRs:
      - 172.23.XX.0/26
      providerID: cn-shanghai.i-ankb8zjh2nzchfxxxxxxx

内部ネットワークドメイン名を解決できない場合はどうすればよいですか?

問題の説明

サービスの内部ネットワークドメイン名を解決できないため、クラウドサービスとオンプレミスサービスは相互にサービスを呼び出すことができません。内部ネットワークドメイン名の解決の失敗には、次のものが含まれます。

  • クラウドサービスは、オンプレミスネットワークの内部ネットワークドメイン名を解決できません。

  • オンプレミスサービスは、クラウド PrivateZone ドメイン名を解決できません。

解決策

オンプレミスソリューションと Alibaba Cloud VPC は、異なるネットワーク環境にデプロイされています。Alibaba Cloud DNS を使用して内部ネットワークドメイン名を解決した後にのみクラウドサービスとオンプレミスサービスが相互に通信できる場合は、Alibaba Cloud DNS PrivateZone を構成して内部ネットワークドメイン名を解決できます。詳細については、Alibaba Cloud DNS PrivateZone と VPN ゲートウェイを使用して、VPC 内の ECS インスタンスがオンプレミス DNS にアクセスできるようにするを参照してください。

オンプレミスサービスがクラウドサービスにアクセスできないのはなぜですか?

問題の説明

オンプレミスサービスは、専用回線を使用して ApsaraDB RDS、オブジェクトストレージサービス (OSS)、ログサービスなどの Alibaba Cloud サービスにアクセスできません。

解決策

次のいずれかの解決策を使用できます。解決策 1 を使用することをお勧めします。

  • 解決策 1

    クラウドでクラウドサービスのドメイン名を設定します。その後、仮想ボーダールーター (VBR) は BGP 経由でオンプレミスネットワークにルートを公開します。詳細については、クラウドサービスへのアクセスを参照してください。

  • 解決策 2

    100.64.0.0/10 を専用回線にルーティングする静的ルートをオンプレミスネットワークに追加します。

セルフマネージドコンテナイメージリポジトリからイメージをプルできないのはなぜですか?

問題の説明

セルフマネージドコンテナイメージリポジトリからイメージをプルしようとすると、次のエラーが報告されます。

Error during Virtual Kubelet deployment

問題の説明

前述の問題の原因は、イメージリポジトリがお客様によって発行された証明書を使用していることです。お客様によって発行された証明書は不適格です。そのため、イメージをプルする際に証明書ベースの認証が失敗します。ポッドを作成する際に、次のアノテーションを追加することで、証明書ベースの認証をスキップできます。

"k8s.aliyun.com/insecure-registry": "<host-name>"

たとえば、プライベートイメージリポジトリにあるNGINXイメージのリンクがtest.example.com/test/nginx:aplineの場合、証明書ベースの認証をスキップするために"k8s.aliyun.com/insecure-registry": "test.example.com"アノテーションを追加できます。

VNodeへのPodのスケジュール方法

ビジネス要件に基づいて、次のいずれかの方法を使用してPodをVNodeにスケジュールできます。その後、PodはVNodeにデプロイされたElastic Container Instance上で実行できます。スケジューリング方法は次のとおりです。

  • 手動スケジューリング

    nodeSelector パラメーターと tolerations パラメーターを設定するか、nodeName パラメーターを指定して、PodをVNodeにスケジュールできます。詳細については、VNodeへのPodのスケジュールを参照してください。

  • 自動スケジューリング

    eci-profile コンポーネントをデプロイした後、Selector パラメーターを指定できます。このようにして、システムは Selector で指定された条件を満たすPodをVNodeに自動的にスケジュールします。詳細については、eci-profile を使用してPodをVNodeにスケジュールするを参照してください。

DaemonSet ポッドが VNode へのスケジュール後に Pending 状態のままになるのはなぜですか?

VNode は実際のノードではなく、DaemonSet をサポートしていません。DaemonSet を作成する場合は、Kubernetes が DaemonSet ポッドを VNode にスケジュールしないように、アンチアフィニティ スケジューリング ポリシーを構成する必要があります。設定例:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: type
            operator: NotIn
            values:
            - virtual-kubelet

ポッドラベルを設定してVNodeにポッドをスケジュールしようとすると、スケジューリングが失敗するのはなぜですか?

この問題は、Kubernetesクラスターのバージョンがv1.16より前であるために発生します。Error 2 during Virtual Kubelet deployment

NASボリュームのマウントがタイムアウトした場合はどうすればよいですか?

原因

File Storage NAS(NAS)ファイルシステムをマウントした後、Kubernetesは、ポッドで指定された権限と所有権に基づいて、NASディレクトリ内のファイルに対してchmodコマンドとchownコマンドを再帰的に実行します。NASディレクトリに多数のファイルが含まれており、ポッドの作成時にセキュリティコンテキストでファイルの権限と所有権を設定すると、NASボリュームのマウントがタイムアウトします。

解決策

セキュリティコンテキストを設定する際に、fsGroupChangePolicyをOnRootMismatchに設定します。これにより、NASファイルシステムのルートディレクトリの権限と所有権がポッドで指定された権限と所有権と一致する場合、システムはchmodコマンドとchownコマンドを実行しません。詳細については、ポッドまたはコンテナのセキュリティコンテキストの構成を参照してください。

ログをログサービスに収集するにはどうすればよいですか?

セルフマネージドKubernetesクラスターにalibaba-log-controllerをインストールしてLogtailエージェントをインストールすることで、ログをログサービスに収集できます。Logtailエージェントをインストールすると、システムは自動的に以下の操作を実行します。

  1. alibaba-log-configurationという名前のConfigMapを作成します。このConfigMapには、プロジェクトなど、ログサービスの構成情報が含まれています。

  2. オプション。AliyunLogConfigという名前のカスタムリソース定義(CRD)を作成します。

  3. オプション。alibaba-log-controllerという名前のデプロイメントコントローラーを作成します。デプロイメントコントローラーは、AliyunLogConfig CRDの変更とLogtail構成の作成を監視するために使用されます。

  4. ノードからログを収集するために、logtail-dsという名前のDaemonSetを作成します。

詳細については、KubernetesクラスターへのLogtailのインストールを参照してください。

説明

クラスターがv1.13などの初期バージョンである場合は、alibaba-cloud-log-0.1.1から初期バージョンのCRDをダウンロードしてデプロイします。他に質問がある場合は、チケットを送信してください。

メトリクスサーバーが 404 エラーを報告した場合の対処方法

メトリクスサーバー v0.5.x 以前は、kubelet API を呼び出して VNode からメトリクスを収集できます。404 エラーが発生した場合は、現在のバージョンよりも前のバージョンのメトリクスサーバーを使用してみてください。

説明

メトリクスサーバー v0.6.0 以降では、ノードメトリクスを取得するために /stats/summary の代わりに /metrics/resource を使用します。メトリクスサーバーは、メトリックリソースエンドポイント /metrics/resource を使用して VNode からメトリクスを収集することはできません。

次のコードは、メトリクスサーバーの起動パラメーターを示しています。

        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --kubelet-insecure-tls