statefulsetコントローラのK8S

オペレーター:

 

statefulset:ステートフルレプリカセット

機能

ラン:1、安定的かつユニークなネットワーク識別子

2、安定性と耐久性ストレージ

3、整然とした、スムーズな展開と拡大

4、整然とかつ円滑削除終了

5と秩序のロールオーバー

 

三つの成分:ヘッドレスサービス(ヘッドレスサービス)、statefuleset、volumeClaimTemplate(ストレージボリュームアプリケーションテンプレート

まず準備 PVを

apiVersion:V1

種類:PersistentVolume

メタデータ:

  名前:pv001

  ラベル:

    名前:pv001

    政治形態:速いです

スペック:

  NFS:

    パス:/データ/ボリューム/ V1

    サーバー:ノード2

  accessModes:[ "ReadWriteMany"、 "ReadWriteOnce"]

  容量:

    ストレージ:5Gi

---

apiVersion:V1

種類:PersistentVolume

メタデータ:

  名前:pv002

  ラベル:

    名前:pv002

    政治形態:速いです

スペック:

  NFS:

    パス:/データ/ボリューム/ v2の

    サーバー:ノード2

  accessModes:[ "ReadWriteOnce"]

  容量:

    ストレージ:5Gi

---

 

apiVersion:V1

種類:PersistentVolume

メタデータ:

  名前:pv003

  ラベル:

    名前:pv003

    政治形態:速いです

スペック:

  NFS:

    パス:/データ/ボリューム/ V3

    サーバー:ノード2

  accessModes:[ "ReadWriteMany"、 "ReadWriteOnce"]

  容量:

    ストレージ:5Gi

---

 

apiVersion:V1

種類:PersistentVolume

メタデータ:

  名前:pv004

  ラベル:

    名前:pv004

    政治形態:速いです

スペック:

  NFS:

    パス:/データ/ボリューム/ V4

    サーバー:ノード2

  accessModes:[ "ReadWriteMany"、 "ReadWriteOnce"]

  容量:

    ストレージ:10Gi

---

 

apiVersion:V1

種類:PersistentVolume

メタデータ:

  名前:pv005

  ラベル:

    名前:pv005

    政治形態:速いです

スペック:

  NFS:

    パス:/データ/ボリューム/ V5

    サーバー:ノード2

  accessModes:[ "ReadWriteMany"、 "ReadWriteOnce"]

  容量:

    ストレージ:10Gi

 

 

-f PV-demo.yamlを適用kubectl

PVを取得kubectl

 

 

apiVersion:V1

種類:サービス

メタデータ:

  名前:myappの-SVCサービス

  ラベル:

    アプリ:myappに

スペック:

  ポート:

  -ポート:80サービスポート

   名前:ウェブサービスポート名

  CLUSTERIP:なしstatefulset 要件ヘッドレスサービス

  セレクター:   ポッド関連するラベル

    アプリ:myappに、ポッド

---

apiVersion:アプリケーション/ V1

種類:StatefulSet

メタデータ:

  名前:myappのstatefulsetのコントローラ名作成したポッドにも名

スペック:

  serviceNameを:myappの-SVC に関連するサービスのサービス名、サービスがヘッドレスでなければなりません

  レプリカ:2

  セレクタ:   管理そのポッド、関連したポッドラベル

    matchLabels:

      アプリ:myappに、ポッド

  テンプレート:定義ポッドテンプレートを

    メタデータ:

      ラベル:   の定義ポッドラベルラベル

        アプリ:myappに、ポッド

   スペック:

     コンテナ:

     -名前:myappのポッドコンテナ名

      画像:ikubernetes / myappに:V1

      ポート:

      - containerPort:80

       名前:ウェブ

      volumeMounts:

       -名前:myappdata  マウント myappdata ストレージ・ボリュームを

         MOUNTPATH:を/ usr / share / nginxの  / HTMLのコンテナ積載パス

  volumeClaimTemplates:PVC ごとのテンプレートポッド定義されたボリュームが自動的に作成されたPVCを

  - メタデータ:

      名前:myappdata    定義された PVCの名前

    スペック:

      accessModes:[ "ReadWriteOnce"]   シングルライト

      リソース:    リソース

        リクエスト:リクエスト

          ストレージ:5Gi 。サイズ5 のGiを保存

 

 

作ります

STSを説明kubectl

-fステートフル・demo.yamlを適用kubectl

 

 

検証:

STSを取得kubectl

PVCを取得kubectl

kubectl GET SVC

PVを取得kubectl

ポッドを取得kubectl

 

削除 STS とき

リバース削除ポッド

-fステートフル・demo.yamlを削除kubectl

場合は、削除 PVCを、まだ、固定のために予約されていポッド

 

statefulset サポートローリングアップデート、規模拡大

リバースアップデート

 

DNSの解決

kubectl幹部-it myappの-0 - / binに/ shを

nslookupをmyappの-3.myapp-svc.default.svc.cluster.local

ドメイン名は、構成する   ポッドネームサービス名の名前空間クラスタドメイン svc.cluster.localを        

域名 pod_name.service_name.namaspace_name.svc.cluster.local

nslookupをmyappの-3.myapp-SVC

 

 

蘇ヨン拡大

kubectl規模のSTS myappの--replicas = 3

kubectlパッチSTS myappの-p '{ "スペック":{ "複製":2}}

 

 

ポリシーを更新

sts.spec.updateStrategyを説明ubectl

sts.spec.updateStrategy.rollingUpdateを説明kubectl

 

 

ゾーニングの更新

sts.spec.updateStrategy.rollingUpdate.partitionを説明kubectl

myappの-0

myappの-1

myappの-2

myappの-3

myappの-4

 

スコア:N

N> = 3

その更新 3 及び4は、即ちmyappの-3、myappの-4 と呼ばれるカナリア放出

検証

この方法の一つ

kubectlパッチSTS myappの-p '{ "スペック":{ "複製":5}}'

kubectlパッチSTS myappの-p '{ "スペック":{ "updateStrategy":{ "rollingUpdate":{ "パーティション":4}}}}'  打上补丁パーティション> = 4

kubectl STS myappの説明  を表示更新ポリシーを

kubectl設定された画像STS / myappのmyappの=  ikubernetes / myappに:v2の画像を変更すると更新されます

STSは広い-o取得kubectl

 

方法二

vimのステートフル-demo.yaml

種類:StatefulSet

   ...

スペック:

  updateStrategy:

    rollingUpdate:

      パーティション:3

 

 -fステートフル・demo.yamlを適用kubectl

 

バージョンは問題ありませんならば、それはすべての更新です

vimのステートフル-demo.yaml

種類:StatefulSet

   ...

スペック:

  updateStrategy:

    rollingUpdate:

      パーティション:0

 

-fステートフル・demo.yamlを適用kubectl 

おすすめ

転載: www.cnblogs.com/leiwenbin627/p/11317274.html