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を使用してメインデータベースデータをバックアップし、単一行のマスタースレーブデータベースを実現します。