LoginSignup
0
0

More than 3 years have passed since last update.

AKS / ReplicaSet で複数の Pod を管理する

Posted at

今回は ReplicaSet を使って、クラスターの中で動かす Pod の数を維持する方法を見ていきます。ReplicaSet を使用すると、アプリケーションエラーや Node 障害時に Pod が停止していまった場合でも自動的に新しい Pod を立ち上げてくれるので非常に便利です。
前回までの環境を前提としています。-> https://qiita.com/komiyasa/items/e63c89859a5d37fe4f3a

マニフェストファイル作成

下記の様なマニフェストファイルを使用します。

replicasetsample.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: photoview-rs

spec:
  replicas: 5
  selector: 
    matchLabels:
      app: photoview

  template:
    metadata:
      labels:
        app: photoview
        env: prod

    spec:
      containers:
      - image: XXXXXXXXXXXXXXXXXXXXX.azurecr.io/photo-view:v1.0
        name: photoview-container
        ports:
          - containerPort: 80

マニフェストファイルの kind: ReplicaSet で作成する ReplicaSet を定義しています。その中の replicas の部分で常に動かす Pod の数を定めます。その下の Templete ではこれまで見てきたように、Pod を Temple から作成しています。Container は作成した ACR の値を代入します。

Pod を作成する

kubectl apply -f replicasetsample.yaml を実行し、そのあとで作成された Pod を確認します。

$ kubectl get pod --show-labels
NAME                 READY   STATUS    RESTARTS   AGE   LABELS
photoview-rs-68nfv   1/1     Running   0          72s   app=photoview,env=prod
photoview-rs-9h6v7   1/1     Running   0          72s   app=photoview,env=prod
photoview-rs-gdcmd   1/1     Running   0          72s   app=photoview,env=prod
photoview-rs-n8hkt   1/1     Running   0          72s   app=photoview,env=prod
photoview-rs-wcj5s   1/1     Running   0          72s   app=photoview,env=prod

出力結果を確認すると、5つの Pod が作成されたのが分かります。これは ReplicaSet として定義をした Pod が作成された結果です。

マニフェストファイルを変更して実行してみる。

先ほどは ReplicaSet で定義した Pod の数は5つでした。今回はマニフェストファイルで定義する Pod の数を 10 に定義します。※変更する前に kubectl delete -f replicasetsample.yaml を実行し作成した Pod を削除しておきましょう。
変更後のマニフェストファイルは以下になります。

replicasetsample.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: photoview-rs

spec:
  replicas: 10
  selector: 
    matchLabels:
      app: photoview

  template:
    metadata:
      labels:
        app: photoview
        env: prod

    spec:
      containers:
      - image: XXXXXXXXXXXXXXXXXXXXX.azurecr.io/photo-view:v1.0
        name: photoview-container
        ports:
          - containerPort: 80

このマニフェストファイルを先ほどと同様に kubectl apply -f replicasetsample.yaml を実行し Pod を作成します。作成できたら、先ほどと同様に kubectl get pod --show-label にて Pod を確認します。

$ kubectl get pod --show-labels
NAME                 READY   STATUS    RESTARTS   AGE   LABELS
photoview-rs-6m2vx   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-7gjn2   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-7jr5b   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-c82ck   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-kcnpp   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-lw8ld   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-rg9lx   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-t5tpc   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-vvzmz   1/1     Running   0          7s    app=photoview,env=prod
photoview-rs-xb6cs   1/1     Running   0          7s    app=photoview,env=prod

マニフェストファイルで定義をした 10個の Pod が ReplicaSet としてデプロイされました。このようにして ReplicaSet を定義することで Node が不具合が起きた場合や Application に不具合が起きる場合に定義した Pod 数を保つことができるので非常に便利です。オーケストレーションの良さがだんだんわかってきました。

参考

ReplicaSet
https://kubernetes.io/ja/docs/concepts/workloads/controllers/replicaset/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0