オペレーター:
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