k8sのステートフルアプリケーション

One。StatefulSet

(1)StatefulSetは、ステートフルアプリケーションを管理するために使用されるワークロードAPIオブジェクトです。インスタンスと外部データに依存するインスタンスの間に非対称の関係があるアプリケーションは「ステートフルアプリケーション」と呼ばれます。
(2)StatefulSetは、展開を管理し、ポッドのセットを拡張するために使用され、これらのポッドのシリアル番号と一意性保証します。
(3)StatefulSetは、次の1つ以上の要件を満たす必要があるアプリケーションに役立ち
ます。1。安定した一意のネットワーク識別子。
2.安定した耐久性のあるストレージ。
3.整然としたエレガントな展開とスケーリング。
4.整然とした自動ローリングアップデート

2.トポロジステータス

apiVersion: v1  #创建Headless service
kind: Service
metadata:
 name: nginx-svc
 labels:
  app: nginx
spec:
 ports:
 - port: 80
   name: web
 clusterIP: None
 selector:
  app: nginx
---
apiVersion: apps/v1  #StatefulSet控制器
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx-svc"
 replicas: 2
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: myapp:v1
     ports:
     - containerPort: 80
       name: web

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

3.ステートフルアプリケーション

(1)StatefulSetは、アプリケーションの状態を2つの状況に抽象化します。
トポロジの状態:アプリケーションインスタンスは特定の順序で開始する必要があります。新しく作成されたポッドは、元のポッドと同じネットワークIDを持っている必要があります。
ストレージの状態:アプリケーションの複数のインスタンスが異なるストレージデータにバインドされます。
(2)StatefulSetはすべてのポッドに番号を付けます。番号付けルールは次のとおりです:(ステートフルセット名)-(ステートフルセット)名前)-S T A T E F U L S E Tと呼ばれる-(番号)、0から
削除(c)、コピー数を0に、ポッドは削除されますポッドネットワークで再構築されます識別は変更されません、ポッドのトポロジステータスはポッドの「名前+番号」に従って固定され、固定された一意のアクセスエントリが各ポッドに提供されます。つまり、DNSレコード
dig-tポッド.svc.clusterに対応するnginx-svc.defaultです。 local @ 10.96.0.10StatefulSet
はヘッドレスサービスを通じてポッドトポロジの状態をどのように維持しますか

4.ストレージステータス

PVとPVCの設計により、StatefulSetがストレージの状態を管理できるようになります

apiVersion: v1
kind: Service
metadata:
 name: nginx-svc
 labels:
  app: nginx
spec:
 ports:
 - port: 80
   name: web
 clusterIP: None
 selector:
  app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx-svc"
 replicas: 2  #通过副本数扩容或删除
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: myapp:v1
     ports:
     - containerPort: 80
       name: web
     volumeMounts:
       - name: www
         mountPath: /usr/share/nginx/html
 volumeClaimTemplates:
  - metadata:
     name: www
    spec:
     storageClassName: managed-nfs-storage
     accessModes:
     - ReadWriteOnce
     resources:
      requests:
       storage: 1Gi

ポッドの作成も、番号順に厳密に実行されます。たとえば、web-0が実行状態になり、Conditions is Readyになる前は、web-1は常に保留状態になります
ここに画像の説明を挿入します
ここに画像の説明を挿入します
。StatefulSetは、各ポッドに同じ番号のPVCを割り当てて作成します。このようにして、kubernetesは、永続ボリュームメカニズムを介して対応するPVをこのPVCにバインドし、各ポッドに独立したボリュームがあることを確認できます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

5.statefullsetを使用してmysqlマスタースレーブクラスターをデプロイします

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
StatefulSet
参照して、最初に必要なイメージをプルし、ローカルウェアハウスにアップロードします。イメージを使用するときは、イメージの場所に注意し
てください。xtrabackupを使用してメインデータベースデータをバックアップし、単一行のマスタースレーブデータベースを実現します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_49564346/article/details/114155987