ReplicaSet を作成する

適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server

この記事では、Azure Arc で有効になっている AKS で ReplicaSets を作成、スケーリング、削除する方法について説明します。ReplicaSets は、安定したレプリカ ポッドのセットが常に実行されるようにするために使用されます。

ReplicaSets の概要

ReplicaSet は、ポッドの複数のインスタンスを実行し、指定された数のポッドを一定に保つプロセスです。 これにより、レプリカ ポッドの安定したセットがすべての時点で実行され、指定された数の同一のポッドを使用できる状態が保証されます。

ポッドに障害が発生すると、ReplicaSet によってポッドの新しいインスタンスが起動され、実行中のインスタンスが指定された数に達するとスケールアップされます。 逆に、同じラベルを持つインスタンスが作成されると、ポッドがスケールダウンまたは削除されます。

ReplicaSet を作成する

kubectl createkubectl apply コマンドを使用して ReplicaSet を作成します。 次の例では、YAML ファイルを使用して ReplicaSet を作成します。

kubectl apply –f nginx_replicaset.yaml

ReplicaSet 構成ファイルの機能が、YAML 形式で示されています。

apiVersion: apps/v1  
kind: ReplicaSet  
metadata: 
      name: web
      labels: 
         env: dev
         role: web
spec:  
   replicas: 4
   selector: 
       matchlabels: 
       role: web
        template:
           metadata:
       labels:
           role: web
spec:  
      containers:  
           -name: nginx  
           image: nginx

ReplicaSet を作成したら、次のコマンドを実行して状態を表示できます。

kubectl get rs

ReplicaSet が管理するポッドは、kubectl edit コマンドを使用してラベルを変更することで除去できますが、削除することはできません。 たとえば、kubectl edit pods 7677-69h5b を実行すると、構成ファイルが開いたときにポッド ラベルを変更できます。

ReplicaSet をスケーリングする

ReplicaSet が管理するポッドの数を変更するには、2 つの方法があります。

  • 次のコマンドを使用して、コントローラーの構成を編集します。

    kubectl edit rs <ReplicaSet_NAME>
    
  • 次のコマンドを使用して、数値を直接増減します。

kubectl scale –replicas=2 rs <ReplicaSet_NAME>

マニフェスト ファイルを編集するときに、既存の構成を、更新された構成に置き換えることができます。

kubectl replace –f nginx_replicaset.yaml

その後、ReplicaSet の状態を表示するために、kubectl get rs <ReplicaSet_NAME> を実行します。

ReplicaSets では kubectl autoscale rs web –max=5 を使用した自動スケールもオプションの 1 つです。 自動スケールを使用して、ノードの CPU 負荷に応じてポッドの数を調整できます。

ReplicaSet を作成する

DaemonSets などの他の Kubernetes オブジェクトと同様に、 コマンドを使用して ReplicaSets を kubectl delete 削除できます。 たとえば、次のコマンドを使用できます。

  • ReplicaSet 名を使用して ReplicaSet を削除するには、次のコマンドを実行します。

    kubectl delete rs <ReplicaSet_NAME>
    
  • ファイル名を使用して ReplicaSet を削除するには、次のコマンドを実行します。

    kubectl delete –f nginx_replicaset.yaml
    
  • 上記のコマンドは、ReplicaSet と、それが管理するすべてのポッドを削除します。 ReplicaSet リソースのみを削除し、所有者なしでポッドを保持する場合は、手動で削除する必要があります。 ReplicaSet を手動で削除するには、次のコマンドを実行します。

    kubectl delete rs <ReplicaSet_NAME> --cascade=false
    

次のステップ