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

Container Service for Kubernetes:Service の作成

最終更新日:Sep 16, 2026

Kubernetes において、サービスは、一連の Pod 上で実行されているアプリケーションをネットワークサービスとして公開する抽象化です。Pod に対して安定した DNS 名と負荷分散を提供します。本トピックでは、Kubernetes サービスの仕組み、重要な考慮事項、およびサービスタイプの選択に関する推奨事項について説明します。

前提条件

ACK Serverless クラスターが必要です。詳細については、「ACK Serverless のクイックスタート」をご参照ください。

Service の仕組み

ラベルセレクターは、Service が対象とする Pod を識別します。Service がトラフィックを受信すると、ラベルがセレクターに一致するすべての Pod にリクエストを分散します。

次の表に、3 つの Service タイプとそれぞれの用途を示します。

Service タイプ

アクセスパターン

用途

[ClusterIP]

クラスター内部の IP アドレスのみ (デフォルト)

同じクラスター内の他のワークロードにアプリを公開する場合

[NodePort]

クラスター外部からの <NodeIP>:<NodePort>

ノードレベルでの直接アクセスが必要な場合。ACK Serverless クラスターでは利用できません

[サーバーロードバランサー]

インターネット向けまたは内部 SLB インスタンス

外部ユーザーまたは VPC 内のコンシューマーにアプリを公開する場合

Kubernetes Service の完全な仕様については、「Kubernetes Service」をご参照ください。

手順1:Deployment の作成

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. デプロイメント ページの右上隅にある YAML のリソースの作成 をクリックします。

  4. サンプルテンプレートを選択するか、カスタム YAML を入力して、作成する をクリックします。

    この例では、サンプルテンプレートは NGINX Deployment です。

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
       name: nginx-deployment-basic
       labels:
         app: nginx
    spec:
       replicas: 2
       selector:
         matchLabels:
           app: nginx
       template:
         metadata:
           labels:
             app: nginx
         spec:
           containers:
           - name: nginx
             image: nginx:1.7.9                # イメージ名とタグを独自のものに置き換えてください。
             ports:
             - containerPort: 80               # このポートは Service で公開する必要があります。
  5. デプロイメントのリストで、対象アプリケーションの名前をクリックするか、詳細 列の [詳細] をクリックして、Deployment のステータスを確認します。nginx-deployment-basic の詳細ページには、その基本情報が表示されます。名前空間は default、セレクターと ラベル は両方とも app:nginx、アノテーションは deployment.kubernetes.io/revision:1、更新ポリシーは RollingUpdate (最大サージ 25%、最大利用不可 25%) です。ステータスには、2/2 の Pod が準備完了、2 つが更新済み、2 つが利用可能であることが示されます。Pod リストでは、両方の Pod が nginx:1.7.9 イメージを使用し、実行中であり、再起動回数は 0 です。

手順2:Service の作成

  1. 詳細ページの左側のナビゲーションウィンドウで、[ネットワーク] > [サービス] を選択します。

  2. サービス ページで、作成する をクリックします。

  3. サービスの作成 ダイアログボックスで、パラメーターを設定します。

    パラメーター

    説明

    [名前]

    Service の名前を入力します。

    Service タイプ

    Service タイプを選択します。これは Service へのアクセス方法を決定します。選択肢は次のとおりです。

    • [ClusterIp]:Service をクラスター内部の IP アドレスで公開します。このタイプの Service は、クラスター内からのみアクセスできます。これはデフォルトの Service タイプです。

      説明

      [ヘッドレス Service] は、サービスタイプ が ClusterIp の場合にのみ設定できます。ヘッドレス Service を使用すると、Kubernetes の実装に依存せず、他のサービス検出メカニズムと連携できます。

    • [NodePort]:各ノードの IP アドレスの静的ポート (NodePort) で Service を公開します。NodePort Service は、自動的に作成される ClusterIP Service にトラフィックをルーティングします。クラスターの外部からは <NodeIP>:<NodePort> を使用して NodePort Service にアクセスできます。

      説明

      NodePort をサポートするのは ACK クラスターのみです。ACK Serverless クラスターはサポートしていません。

    • [Server Load Balancer]:Alibaba Cloud サーバーロードバランサー (SLB) インスタンスを使用して Service を公開します。インターネット経由で公開するか、プライベートネットワーク内のみで公開するかを選択できます。サーバーロードバランサーは、NodePort および ClusterIP Service にトラフィックをルーティングできます。

      • [SLB インスタンスの作成]:変更 をクリックして SLB インスタンスの仕様を変更します。

      • [既存の SLB インスタンスを使用]:既存のインスタンスのリストから SLB インスタンスを選択します。

      説明

      サーバーロードバランサータイプでは、新しい SLB インスタンスを作成するか、既存のインスタンスを使用できます。複数の Kubernetes Service で同じ SLB インスタンスを共有できますが、次の制限があります。

      • 既存の SLB インスタンスを使用する場合、既存のリスナーは上書きされます。

      • 他の Service によって自動的に作成された SLB インスタンスは、誤って削除される可能性があるため、再利用しないでください。

      • 複数の Service が同じ SLB インスタンスを再利用する場合、ポートの競合を避けるために、フロントエンドリスナーポートが重複しないようにしてください。

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

      • 異なるクラスター間で SLB インスタンスを再利用することはできません。

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

    外部トラフィックポリシーを設定します。詳細な比較については、「外部トラフィックポリシーの比較」をご参照ください。

    • Local:トラフィックは、リクエストを受信したノードと同じノード上の Pod にのみルーティングされます。

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

    説明

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

    [バックエンド]

    Service がトラフィックを送信するバックエンドアプリケーションを選択します。Service をバックエンドに関連付けない場合、Kubernetes は対応する Endpoints オブジェクトを作成しません。詳細については、「セレクターのない Service」をご参照ください。

    [ポートマッピング]

    サービスポート (サービス YAML ファイルの port フィールド) とコンテナポート (サービス YAML ファイルの targetPort フィールド) を追加します。コンテナポートは、バックエンド Pod によって公開されるポートと一致させる必要があります。

    アノテーション

    アノテーションを追加して、ロードバランサーのパラメーターを設定します。カスタムアノテーション または Alibaba Cloud アノテーション を選択できます。たとえば、アノテーション service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:2 は、サービスのピーク帯域幅を 2 Mbit/s に設定してトラフィックを制御します。その他のパラメーターについては、「アノテーションを使用した Classic Load Balancer (CLB) の設定」をご参照ください。

    [タグ]

    Service を識別するためのラベルを追加します。

  4. 作成する をクリックします。

    新しく作成された Service が サービス ページのリストに表示されます。

    [Service] ページで、管理したい Service の [操作] 列にある [更新] または [削除] をクリックします。

    説明

    Service の詳細ページで、外部エンドポイント の横にあるリンクをクリックしてアプリケーションにアクセスできます。