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

Container Compute Service:Service を使用したアプリケーションの公開

最終更新日:Jun 18, 2026

Kubernetes では、Pod はエフェメラルであり、その IP アドレスは安定していません。Service は、安定した IP アドレスを提供し、バックエンド Pod の論理的なセットにトラフィックをルーティングすることで、クライアントを個々の Pod のライフサイクルから切り離します。ACS コンソールまたは kubectl CLI を使用して Service を作成し、公開できます。

方法1:コンソールを使用した Service の作成

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

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

  3. Services ページで、Create をクリックします。Create Service ダイアログボックスで、Service のパラメーターを設定します。

    パラメーター

    説明

    []

    Service の名前です。

    my-nginx-svc

    [サービスタイプ]

    Service のアクセス方法です。次のタイプが使用可能です:

    • Cluster IP:クラスター内部の IP アドレスで Service を公開します。Service はクラスター内からのみアクセスできます。

      説明

      Cluster IP を選択すると、ヘッドレスサービス を設定できます。ヘッドレスサービスを使用すると、Kubernetes の実装に縛られることなく、他のサービスディスカバリーメカニズムと統合できます。

    • Server Load Balancer:Alibaba Cloud のクラシックロードバランサー (CLB) インスタンスを使用して Service を公開します。Public Access または Internal Access を選択できます。CLB は、Service の ClusterIP にトラフィックをルーティングします。

      • リソースの新規作成[Pay-by-specification] を選択した場合、仕様の変更 をクリックして CLB の仕様を変更できます。

      • 既存のリソースを使用:リストから既存の CLB インスタンスを選択できます。

      説明
      • 既存の CLB インスタンスを使用すると、その既存のリスナーが上書きされます。

      • Service によって作成された CLB インスタンスは再利用できず、誤って削除される可能性があります。

      • コンソールで手動で作成した、または API を呼び出して作成した CLB インスタンスのみが再利用できます。

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

      • CLB インスタンスはクラスター間で再利用できません。

    [Create Service]:

    • サービスタイプ: LoadBalancer

    • SLB タイプ: Classic Load Balancer (CLB)

    • リソースの選択: Create Resource

    CLBリソースの作成

    • アクセス方法: internal access

    • その他の設定にはデフォルト値を使用します。

    [バックエンド]

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

    • Name: app

    • Value: nginx

    [ポートマッピング]

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

    • Service Port: 80

    • Container Port: 80

    • Protocol: TCP

    [Annotations]

    アノテーションを追加して、Service の ClusterIP または LoadBalancer リソースを設定します。

    説明

    Alibaba Cloud 固有のアノテーションは、サービスタイプServer Load Balancer に設定されている場合にのみ有効になります。たとえば、アノテーション service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:2 は、Service のピーク帯域幅を 2 Mbit/s に設定してトラフィックを制御します。アノテーションの完全なリストについては、「アノテーションを使用したクラシックロードバランサー (CLB) の設定」をご参照ください。

    なし

    [Label]

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

    なし

    パラメーターを設定した後、OK をクリックします。

  4. Service が作成されると、Services ページで my-nginx-svc という名前の新しい Service を確認できます。

方法2:kubectl を使用した Service の作成

  1. CloudShell で kubectl を使用して Kubernetes クラスターに接続します

  2. my-nginx-svc.yaml という名前のファイルを作成し、次の内容を記述します。

    my-nginx-svc.yamlの表示

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: "intranet"
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer

    フィールド

    説明

    kind

    リソースオブジェクトのタイプを Service として定義します。

    metadata

    Service の名前、ラベル、名前空間などの基本情報を定義します。

    metadata.annotations

    ACS は、LoadBalancer タイプの Service を設定するための豊富なアノテーションセットを提供します。この例では、アノテーション service.beta.kubernetes.io/alicloud-loadbalancer-address-typeintranet (内部アクセス) を指定します。その他のアノテーションについては、「アノテーションを使用したクラシックロードバランサー (CLB) の設定」をご参照ください。

    spec.selector

    Service のラベルセレクターです。Service はこれらのラベルを持つ Pod と一致し、それらにトラフィックをルーティングします。

    spec.ports.port

    Service の ClusterIP で公開されるポートです。クラスター内のクライアントは、clusterIP:port で Service にアクセスします。

    spec.ports.targetPort

    バックエンド Pod のポートです。port に到着したトラフィックは、kube-proxy によってバックエンド Pod の targetPort に転送されます。

    spec.type

    Service がどのように公開されるかを指定します。

    • LoadBalancer:Alibaba Cloud CLB インスタンスを使用して Service を公開します。Service に既存の CLB インスタンスを指定しない場合、デフォルトでパブリックアクセス用の CLB インスタンスが作成されます。内部アクセスを持つ Service と対応するプライベート CLB を作成するには、service.beta.kubernetes.io/alicloud-loadbalancer-address-type アノテーションを intranet に設定します。

    • ClusterIP:クラスター内部の IP アドレスで Service を公開し、クラスター内からのアクセスを可能にします。

    重要

    Container Compute Service (ACS) は、NodePort タイプの Service をサポートしていません。このタイプの Service を作成しようとすると、失敗するか、Service が有効になりません。

  3. 次のコマンドを実行して、Service を作成します:

    kubectl apply -f my-nginx-svc.yaml
  4. 次のコマンドを実行して、Service が作成されたことを確認します:

    kubectl get svc my-nginx-svc

    実行結果の例:

    NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)   AGE
    my-nginx-svc   LoadBalancer   172.16.XX.XX   192.168.XX.XX   80/TCP    13s

関連操作

Serviceの更新

  • 方法1:既存の Service を直接編集するには、次のコマンドを実行します。これにより、Service の設定がデフォルトのエディターで開かれます。

    kubectl edit service my-nginx-svc
  • 方法2:マニフェストファイルから Service を更新するには、ローカルの YAML ファイルを変更して変更を適用します。

    kubectl apply -f my-nginx-svc.yaml

Serviceの表示

次のコマンドを実行して、Service の詳細を表示します:

kubectl get service my-nginx-svc

実行結果の例:

NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)   AGE
my-nginx-svc   LoadBalancer   172.16.XX.XX   192.168.XX.XX   80/TCP    13s

Serviceの削除

次のコマンドを実行して、Service を削除します:

kubectl delete service my-nginx-svc