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

Container Compute Service:StatefulSet の作成

最終更新日:Jun 09, 2026

Container Service for Kubernetes (ACK) クラスターでは、コンソールから StatefulSet を作成できます。この例では、ステートフルな NGINX アプリケーションをデプロイすることで、StatefulSet の機能を示します。

前提条件

kubectl が Kubernetes クラスターに接続されている必要があります。クラスターの kubeconfig を取得して kubectl を使用し、クラスターに接続します

StatefulSet の機能

StatefulSet は以下の機能を提供します。

機能

説明

一貫した Pod アイデンティティ

順序の保証 (起動およびシャットダウンの順序など) と、スケジューリングに関わらず Pod に維持される一貫したネットワークアイデンティティを提供します。

安定した永続ストレージ

VolumeClaimTemplate を使用して、各 Pod 用に PV を作成します。スケールダウンまたはレプリカの削除を行っても、関連するボリュームは削除されません。

安定したネットワークアイデンティティ

Pod の ホスト名 は、次のパターンになります: (StatefulSet name)-(ordinal index)

安定した順序

レプリカ数が N 個の StatefulSet は、各 Pod に [0, N) の範囲で一意の順序インデックスを割り当てます。

手順

ステップ1:アプリケーションの基本情報の設定

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

  2. クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、ワークロード > ステートフルセット を選択します。

  3. ステートフルセット ページで、イメージから作成 をクリックします。

  4. 基本情報 ページで、アプリケーションを設定します。

    パラメーター

    説明

    [名前]

    アプリケーション名を入力します。

    [Replicas:]

    アプリケーションの Pod 数です。デフォルトは 2 です。

    [ワークロード]

    ステーフルセット を選択します。

    Label

    アプリケーションを識別するためのラベルです。

    Annotation

    アプリケーションのアノテーションです。

    インスタンスタイプ

    コンピューティングタイプを選択します。詳細については、「ACS Pod インスタンスの概要」をご参照ください。

    [QoS タイプ]

    コンピューティング能力の QoS タイプを選択します。

    以下の表は、コンピューティングタイプとコンピューティング能力 QoS タイプのマッピングを示しています。

    コンピューティングクラス

    サポートされる QoS クラス

    汎用 (general-purpose)

    default (デフォルト)、best-effort (ベストエフォート)

    パフォーマンス (performance)

    default (デフォルト)、best-effort (ベストエフォート)

    GPU アクセラレーション (gpu)

    default (デフォルト)、best-effort (ベストエフォート)

    GPU-HPN (gpu-hpn)

    default (デフォルト)

    詳細については、「コンピューティング能力 QoS 定義」をご参照ください。

  5. [次へ] をクリックすると、コンテナー ページが開きます。

ステップ 2:コンテナの設定

Container ページで、コンテナを設定します。

説明

Pod に複数のコンテナを追加するには、コンテナ 1 タブの右側にある Add Container をクリックします。

  1. General セクションで、コンテナの基本設定を完了します。

    パラメーター

    説明

    Image Name

    • イメージの選択

      Select Image をクリックし、必要なイメージを選択します。

      • Container Registry Enterprise Edition:Container Registry (ACR) にホストされている Enterprise Edition のイメージを選択できます。イメージが属するリージョンおよび ACR インスタンスを選択する必要があります。ACR の詳細については、「Container Registry (ACR) とは」をご参照ください。

      • Container Registry Personal Edition(有効化が必要):ACR にホストされている Personal Edition のイメージを選択できます。イメージが属するリージョンおよび ACR インスタンスを選択する必要があります。

      • プロダクトセンター:コンテナ化用のベース OS イメージ、ベース言語イメージ、AI やビッグデータ関連のイメージが含まれています。この例では、中国 (杭州) リージョンのアーティファクトセンターにある Nginx イメージを使用します。詳細については、「アーティファクトセンター」をご参照ください。

    • (オプション)イメージプルポリシーの設定

      Image Pull Policy ドロップダウンリストからイメージプルポリシーを選択します。このパラメーターを設定しない場合、Kubernetes のデフォルトポリシーである IfNotPresent が使用されます。

      • IfNotPresent:Kubernetes はローカルにイメージが存在しない場合にのみイメージをプルします。

      • Always:Kubernetes は常にイメージをプルし、ローカルのコピーは無視されます。

      • Never:Kubernetes はローカルのイメージのみを使用します。

    • (オプション)イメージプルシークレットの設定

      プライベートイメージのセキュリティを確保するために、Set Image Pull Secret をクリックしてシークレットを設定します。

      • ACR Personal Edition インスタンスの場合、イメージプルシークレットを設定することでイメージをプルできます。シークレットの設定方法の詳細については、「シークレットの管理」をご参照ください。

      • ACR Enterprise Edition インスタンスの場合、パスワード不要コンポーネントを使用することでシークレットなしでイメージをプルできます。詳細については、「シークレットなしで ACR イメージをプルする」をご参照ください。

    Required Resources

    コンテナのリソースリクエストとリミットを設定します。

    • CPU:コンテナの CPU リクエストおよびリミットを指定できます。デフォルトでは、CPU リクエストはリミットと等しくなり、リソースは従量課金となります。YAML ファイルを使用してリクエストとは異なるリミットを設定した場合、リクエスト値は自動的にリミット値に合わせて設定されます。詳細については、「リソース仕様」をご参照ください。

    • Memory:コンテナのメモリリクエストおよびリミットを指定できます。デフォルトでは、メモリリクエストはリミットと等しくなり、リソースは従量課金となります。YAML ファイルを使用してリクエストとは異なるリミットを設定した場合、リクエスト値は自動的にリミット値に合わせて設定されます。詳細については、「リソース仕様」をご参照ください。

    インタラクティブセッション

    (オプション)コンテナ起動オプションを設定します。

    • stdin:コンソール入力をコンテナに送信します。

    • tty:標準入力コンソールをコンテナのコンソール入力として使用します。

    説明

    通常、stdintty の両方を選択します。これにより、端末 (tty) がコンテナの標準入力 (stdin) にバインドされます。たとえば、インタラクティブなプログラムはユーザーからの標準入力を取得し、端末に出力を表示します。

    Init Containers

    (オプション)このオプションを選択して Init コンテナを作成します。

    Init コンテナは、アプリケーションコンテナの起動をブロックまたは遅延させるメカニズムを提供します。Init コンテナが正常に完了すると、Pod 内のアプリケーションコンテナが並行して起動します。たとえば、依存サービスの可用性を確認するために Init コンテナを使用できます。Init コンテナには、アプリケーションイメージに存在しないユーティリティやインストールスクリプトを含めることができ、カーネルパラメータの設定や設定ファイルの生成など、アプリケーションコンテナの実行環境を初期化するために使用できます。詳細については、「Init コンテナ」をご参照ください。

  2. (オプション)Ports セクションで、Add をクリックしてコンテナポートを設定します。

    パラメーター

    説明

    Name

    コンテナポートの名前を入力します。

    Container Port

    アクセス用に公開するコンテナポートを指定します。ポート番号は 1 ~ 65535 の範囲内である必要があります。

    Protocol

    TCP および UDP がサポートされています。

  3. (省略可)Environments セクションで、Add をクリックして環境変数を設定します。

    キーと値のペアで Pod の環境変数を設定し、環境フラグを追加したり、設定を渡したりできます。詳細については、「Pod 環境変数」をご参照ください。

    パラメーター

    説明

    Type

    環境変数のタイプを設定します。

    • Custom

    • ConfigMaps

    • Secrets

    • Value/ValueFrom

    • ResourceFieldRef

    ConfigMap またはシークレット内のすべてのファイルを参照できます。

    この例ではシークレットを使用します。Secrets タイプを選択し、対象のシークレットのみを選択した場合、そのシークレット内のすべてのキーと値のペアがデフォルトで参照されます。环境变量

    対応する YAML でもシークレット全体が参照されます。yaml

    Variable Key

    環境変数の名前を入力します。

    Value/ValueFrom

    参照する値を設定します。

  4. (オプション)Health Check セクションで、必要に応じて LivenessReadiness、および Startup を有効にします。

    • Liveness プローブ:Liveness プローブはコンテナが実行中かどうかをチェックします。プローブが複数回失敗すると、kubelet がコンテナを再起動します。これにより、コンテナは実行中だが進行できない状態(デッドロックなど)の問題を解決できます。

    • Readiness プローブ:Readiness プローブはコンテナがトラフィックを受け入れる準備ができているかどうかをチェックします。Pod は readiness プローブが成功した後でのみ、Service のバックエンドとして追加されます。

    • スタートアッププローブ:これらのプローブはコンテナの起動時のみ実行され、正常に起動したかどうかをチェックします。Liveness プローブ および Readiness プローブ は、スタートアッププローブが成功した後でのみ実行されます。

    詳細については、「Liveness、Readiness、および Startup プローブの設定」をご参照ください。

    パラメーター

    説明

    HTTP

    コンテナに HTTP GET リクエストを送信します。サポートされるパラメーターは以下のとおりです。

    • ProtocolHTTP または HTTPS

    • Path:HTTP サーバーにアクセスするパス。

    • Port:コンテナが公開するアクセスポートまたはポート名。ポート番号は 1 ~ 65535 の範囲内である必要があります。

    • HTTP Header:カスタム HTTP リクエストヘッダー。重複するヘッダーも許可されます。これはキーと値のペアで設定します。

    • Initial Delay (s)initialDelaySeconds に対応します。コンテナ起動後、最初のプローブを開始するまで待機する秒数です。デフォルト値:3。

    • Period (s)periodSeconds に対応します。プロービングの間隔(秒単位)です。デフォルト値:10 秒。最小値:1 秒。

    • Timeout (s)timeoutSeconds に対応します。各プローブのタイムアウト時間(秒単位)です。デフォルト値:1 秒。最小値:1 秒。

    • Healthy Threshold:障害後にコンテナを正常とマークするために必要な連続成功回数です。デフォルト値:1。最小値:1。Liveness プローブの場合、この値は必ず 1 である必要があります。

    • Unhealthy Threshold:コンテナを異常とマークするために必要な連続失敗回数です。デフォルト値:3。最小値:1。

    TCP

    kubelet は、指定されたポートでコンテナ上のソケットを開こうと試みます。接続が確立されると、プローブは成功します。それ以外の場合は失敗します。サポートされるパラメーターは以下のとおりです。

    • Port:コンテナが公開するアクセスポートまたはポート名。ポート番号は 1 ~ 65535 の範囲内である必要があります。

    • Initial Delay (s)initialDelaySeconds に対応します。コンテナ起動後、最初のプローブを開始するまで待機する秒数です。デフォルト値:15。

    • Period (s)periodSeconds に対応します。プロービングの間隔(秒単位)です。デフォルト値:10 秒。最小値:1 秒。

    • Timeout (s)timeoutSeconds に対応します。各プローブのタイムアウト時間(秒単位)です。デフォルト値:1 秒。最小値:1 秒。

    • Healthy Threshold:障害後にコンテナを正常とマークするために必要な連続成功回数です。デフォルト値:1。最小値:1。Liveness プローブの場合、この値は必ず 1 である必要があります。

    • Unhealthy Threshold:コンテナを異常とマークするために必要な連続失敗回数です。デフォルト値:3。最小値:1。

    Command

    コンテナ内でプローブコマンドを実行して、ヘルスステータスをチェックします。サポートされるパラメーターは以下のとおりです。

    • Command:コンテナのヘルスをチェックするために使用するプローブコマンド。

    • Initial Delay (s)initialDelaySeconds に対応します。コンテナ起動後、最初のプローブを開始するまで待機する秒数です。デフォルト値:5。

    • Period (s)periodSeconds に対応します。プロービングの間隔(秒単位)です。デフォルト値:10 秒。最小値:1 秒。

    • Timeout (s)timeoutSeconds に対応します。各プローブのタイムアウト時間(秒単位)です。デフォルト値:1 秒。最小値:1 秒。

    • Healthy Threshold:障害後にコンテナを正常とマークするために必要な連続成功回数です。デフォルト値:1。最小値:1。Liveness プローブの場合、この値は必ず 1 である必要があります。

    • Unhealthy Threshold:コンテナを異常とマークするために必要な連続失敗回数です。デフォルト値:3。最小値:1。

  5. (オプション)Lifecycle セクションで、コンテナのライフサイクルフックを設定します。

    コンテナのライフサイクルに対して、開始実行、Post Start、Pre Stop ハンドラを設定できます。詳細については、「コンテナライフサイクルイベントにハンドラをアタッチする」をご参照ください。

    パラメーター

    説明

    実行の有効化

    コンテナの事前開始コマンドとパラメーターを設定します。

    起動後処理

    コンテナ起動後に実行するコマンドを設定します。

    PreStop 処理

    コンテナ終了前に実行するコマンドを設定します。

  6. (オプション)Volume セクションで、データボリュームをコンテナにマウントします。

    • ローカルストレージ:ConfigMap、シークレット、または一時ディレクトリをコンテナ内のパスにマウントできます。詳細については、「ボリューム」をご参照ください。

    • クラウドストレージ:クラウドディスク、NAS などをサポートしています。詳細については、「ストレージ概要」をご参照ください。

  7. (オプション)Log セクションで、Collection Configuration および Custom Tag 設定を構成します。

    パラメーター

    説明

    収集設定

    • Logstore:収集されたログを保存するために、Log Service に対応する Logstore が作成されます。

    • Log Path in Container (Can be set to stdout):Stdout およびテキストログをサポートしています。

      • Stdout:コンテナの標準出力ログを収集します。

      • テキストログ:コンテナ内の指定されたパスからログを収集します。この例では、/var/log/nginx 下のすべてのテキストログを収集します。ワイルドカード文字もサポートされています。

    カスタムタグ

    カスタムタグも設定できます。タグを設定すると、コンテナのログ出力と一緒に収集されます。カスタムタグを使用すると、統計やフィルタリングなどの分析のためにコンテナログにラベルを付けることができます。

  8. Next をクリックして、Advanced ページに進みます。

ステップ 3:高度な設定

Advanced ページで、アクセス、スケーリング、スケジューリングなどの設定を行います。

  1. Access Control セクションで、バックエンド Pod の公開方法を設定します。

    この例では、ClusterIP サービスと Ingress を使用して、パブリックにアクセス可能な Nginx アプリケーションを作成します。

    • サービスの設定:Services の右側にある Create をクリックして、サービス設定パラメーターを設定します。

      サービス設定の詳細を表示

      パラメーター

      説明

      Name

      サービスの名前を入力します。この例では nginx-svc を使用します。

      Type

      サービスのタイプを選択します。これにより、アクセス方法が決まります。この例では Cluster IP を選択します。

      • Cluster IP:クラスター内の内部 IP アドレスでサービスを公開します。このタイプを選択すると、サービスはクラスター内からのみアクセス可能です。これがデフォルトの ServiceType です。

        説明

        ヘッドレスサービス は、サービスタイプが Cluster IP の場合にのみ設定できます。

      • Server Load Balancer:Alibaba Cloud Server Load Balancer (SLB) インスタンスを使用します。パブリックまたはプライベートアクセス用に設定できます。SLB インスタンスは ClusterIP サービスへのトラフィックをルーティングできます。

        • SLB の作成:Modify をクリックして SLB のスペックを変更できます。

        • 既存の SLB の使用:既存のリストから SLB スペックを選択できます。

        説明

        LoadBalancer タイプの場合、新しい SLB インスタンスを作成するか、既存のものを使用できます。複数の Kubernetes サービスで同じ SLB インスタンスを再利用できますが、以下の制限があります。

        • 既存の SLB インスタンスを使用すると、現在のリスナーが上書きされます。

        • Kubernetes サービスによって作成された SLB インスタンスは再利用できません。誤って削除される可能性があるためです。コンソールまたは API を呼び出して手動で作成した SLB インスタンスのみを再利用できます。

        • 同じ SLB インスタンスを再利用する複数のサービスは、同じフロントエンドリスナーポートを持つことはできません。ポート競合が発生するためです。

        • SLB インスタンスを再利用する場合、リスナーと仮想サーバーグループの名前が Kubernetes によって一意の識別子として使用されます。これらの名前を変更しないでください。

        • 異なるクラスター間で SLB インスタンスを再利用することはサポートされていません。

      Port Mapping

      サービスポートとコンテナポートを追加します。コンテナポートは、バックエンド Pod が公開するポートと一致している必要があります。

      外部トラフィックポリシー

      • Local:トラフィックはローカルノード上の Pod のみに送信されます。

      • Cluster:トラフィックは他のノード上の Pod にも転送できます。

      説明

      外部トラフィックポリシー は、サービスタイプが Server Load Balancer の場合にのみ設定できます。

      Annotations

      SLB パラメーターを設定するためにサービスにアノテーションを追加します。たとえば、service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20 を設定すると、サービスのピーク帯域幅が 20 Mbit/s に設定され、サービスのトラフィックを制御できます。

      Label

      サービスを識別するためのラベルを追加します。

    • Ingress の設定:Ingresses の右側にある Create をクリックして、バックエンド Pod のルーティングルールを設定します。

      Ingress 設定の詳細を表示

      説明

      イメージからアプリケーションを作成する場合、1 つのサービスに対してのみ Ingress を作成できます。この例では、テストドメインとしてバーチャルホスト名を使用します。hosts ファイルにドメインマッピングを追加する必要があります(Ingress 外部エンドポイント + Ingress ドメイン)。本番環境では、登録済みのドメイン名を使用してください。

      101.37.XX.XX   foo.bar.com    # これは Ingress の IP アドレスです。

      パラメーター

      説明

      Name

      Ingress の名前を入力します。この例では alb-ingress を使用します。

      Rule

      ルーティングルールは、インバウンドリクエストがクラスターサービスに到達する方法を定義します。詳細については、「ALB Ingress クイックスタート」をご参照ください。

      • ドメイン名:Ingress ドメイン名を入力します。

      • Path:サービスアクセス用の URL パスを指定します。デフォルトはルートパス (/) で、この例で使用します。各パスはバックエンド(サービス)に関連付けられています。SLB インスタンスがバックエンドにトラフィックを転送する前に、すべてのインバウンドリクエストはまずドメインとパスに一致する必要があります。

      • Services:サービスの名前と対応するポートを選択します。

      • TLS:安全なルーティングサービスを設定します。

      この例では、テストドメイン foo.bar.com を使用し、サービスを nginx-svc に設定します。

      カナリアリリース

      カナリアリリース機能を有効にします。Alibaba Cloud 版のカナリアリリースはメンテナンスされていないため、Open Source Solution を選択することを推奨します。

      Ingress クラス

      Ingress 用のカスタムクラスを指定します。

      Annotations

      カスタムアノテーション名と値を定義するか、アノテーションを選択または検索して設定できます。追加 をクリックしてアノテーション名と値(Ingress アノテーションのキーと値のペア)を入力します。Ingress アノテーションの詳細については、「アノテーション」をご参照ください。

      Label

      追加 をクリックしてラベル名と値を入力し、Ingress に対応するラベルを追加して、その特性を識別します。

  2. (オプション)Scaling セクションで、アプリケーションの負荷に応じたニーズを満たすために HPA を有効にするかどうかを設定します。

    • ACS は Horizontal Pod Autoscaler (HPA) をサポートしており、Pod の CPU およびメモリリソース使用量に基づいて Pod 数を自動調整します。

      説明

      自動スケーリングを有効にするには、コンテナの必要なリソースを設定する必要があります。設定しないと、自動スケーリングは機能しません。

      パラメーター

      説明

      Metric

      CPU およびメモリをサポートしています。タイプは、必要なリソースで設定したものと同じである必要があります。

      トリガー条件

      リソース使用率のパーセンテージです。この使用率を超えると、アプリケーションはスケールアウトします。

      Max. Replicas

      このワークロードがスケールアウトできる Pod の最大数です。

      Min. Replicas

      このワークロードがスケールインできる Pod の最小数です。

    • ACS は CronHPA を使用した Pod のスケジュールされたスケーリングをサポートしており、Kubernetes クラスターのスケジュールされたスケーリング(スケールアウトまたはスケールイン)が可能です。スケジュールされたスケーリングを有効にする前に、ack-kubernetes-cronhpa-controller コンポーネントをインストールする必要があります。詳細については、「CronHPA」をご参照ください。

  1. (オプション)Labels,Annotations セクションで、追加 をクリックして、Pod のラベルおよびアノテーションを設定します。

  2. Create をクリックします。

ステップ 4:アプリケーションの表示

作成後、確認ページが表示されます。詳細の表示 をクリックして、StatefulSet の詳細ページを開きます。

または、展開 ページで StatefulSet 名をクリックするか、[操作] 列の [詳細] をクリックします。