k 8 s deploymentによるアップグレード
Deployment(中国語では配置、スケジューリングを意味する)は、RCとPodをより簡単に更新するメカニズムを提供し、K 8 Sバージョン1.2で実現された.Deploymentで所望のクラスタ状態を記述することによって、Deployment Controllerは現在のクラスタ状態を制御可能な速度で所望のクラスタ状態に徐々に更新する.Deploymentの主な役割はpodの数と健康を保証するためであり、90%の機能はRCと全く同じであり、次世代のRCと見なすことができる.
機能
Deploymentはオンライン配置、スクロールアップグレード、コピー作成、オンラインタスクの一時停止、オンラインタスクの回復、以前のバージョン(成功/安定)にロールバックするDeploymentなどの機能を統合し、ある程度、Deploymentは無人のオンラインを実現し、オンラインプロセスの複雑なコミュニケーション、操作リスクを大幅に低減することができる.
RC全機能:DeploymentはRC全機能を継承している.
イベントとステータスの表示:Deploymentのアップグレードの詳細とステータスを表示できます.
ロールバック:podミラーまたは関連パラメータをアップグレードしたときに問題が発生した場合、ロールバック操作を使用して前の安定したバージョンまたは指定したバージョンにロールバックできます.
バージョンレコード:Deploymentの操作のたびに保存され、後続のロールバック使用が可能になります.
≪一時停止と起動|Pause and Start|emdw≫:アップグレードのたびに、いつでも一時停止および起動できます.
複数のアップグレードスキーム:Recreate--既存のpodをすべて削除し、新しいものを再作成します.RollingUpdate-スクロールアップグレード、段階的に置換されたポリシーをスクロールアップグレードすると、最大使用不可pod数の設定、最小アップグレード間隔の設定など、より多くの追加パラメータがサポートされます.
シーンの操作
Deploymentを使用してPodまたはRSを起動(オンライン/導入)
Deploymentが正常に実行されたかどうかを確認します
Deploymentを更新して対応するPodsを再作成します(たとえば、新しいImageを使用する必要があります)
既存のDeploymentが不安定な場合は、初期の安定したDeploymentバージョンにロールバックします.
Deploymentを一時停止または再開
RCと比較してdeploymentのメリット
DeploymentはRSを使用しており、より高い概念です.
RCは等式ベースのselector(env=devまたはenvironment!=qa)のみをサポートするが、RSは新しい、集合ベースのselector(version in(v 1.0,v 2.0)またはenv notin(dev,qa))もサポートし、複雑なメンテナンス管理に便利である.
Deploymentを使用してPodをアップグレードするには、Podの最終状態を定義するだけで、K 8 Sは必要な操作を実行します.コマンドkubectl rolling-updateを使用してアップグレードを完了することができますが、クライアントとサービス側でRCを複数回インタラクティブに制御して完了するので、REST APIにはrolling-updateのインタフェースがありません.これは自分の管理システムをカスタマイズするのにいくつかの面倒をもたらします.
Deploymentは、より柔軟で強力なアップグレード、ロールバック機能を備えています.
共通コマンド
作成
サブコマンドcreateを使用してDeploymentを作成
kubectl create -f test-dpm.yaml --record
注記--recordパラメータ.このパラメータを使用すると、後でオブジェクトを作成する操作が記録され、管理と問題の遡及が容易になります.
配置ステータスの表示
-
kubectl rolloutstatus deployment/lykops-dpm
-
kubectl
describe deployment/lykops-dpm
kubectl set image deployment/lykops-dpm lykops-dpm=app:v1
edit, spec.replicas/spec.template.spec.container.image , deployment ( rolling-update )
kubectl rolloutpause deployment/lykops-dpm
kubectl rolloutresume deployment/lykops-dpm
kubectl rolloutundo deployment/lykops-dpm
deployments
kubectl rollouthistory deployments
kubectl rolloutundo deployment/lykops-dpm --to-revision=2
-
kubectl describedeployment/lykops-dpm
-
Name: lykops-dpm
-
Namespace:
default
-
CreationTimestamp: Tue,
01 Aug
2017
16:
56:
45 +
0800
-
Labels: app=lykops-dpm
-
project=lykops
-
software=apache
-
version=v1
-
Selector: app=lykops-dpm,name=lykops-dpm,project=lykops,software=apache,version=v1
-
Replicas:
3updated |
3 total |
3 available |
0 unavailable
-
StrategyType: Recreate
-
MinReadySeconds:
30
-
Conditions:
-
Type Status Reason
-
---- ------ ------
-
Available
True MinimumReplicasAvailable
-
OldReplicaSets:
-
NewReplicaSet: lykops-dpm
-4183418831 (
3/
3 replicas created)
-
Events:
-
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
-
--------- -------- ----- ---- ------------- -------- ------ -------
-
29m
29m
1 {deployment-controller } Normal ScalingReplicaSet Scaledup replica
set lykops-dpm
-2823415590
to
3
-
28m
28m
1 {deployment-controller } Normal ScalingReplicaSet Scaleddown replica
set lykops-dpm
-2823415590
to
0
-
28m
28m
1 {deployment-controller } Normal ScalingReplicaSet Scaledup replica
set lykops-dpm
-4001949646
to
3
-
26m
26m
1 {deployment-controller } Normal ScalingReplicaSet Scaleddown replica
set lykops-dpm
-4001949646
to
0
-
26m
26m
1 {deployment-controller } Normal ScalingReplicaSet Scaledup replica
set lykops-dpm
-4183418831
to
3
-
apiVersion: extensions/v1beta1
-
kind: Deployment
-
metadata:
-
name: lykops-dpm
-
labels:
-
software: apache
-
project: lykops
-
app: lykops-dpm
-
version: v1
-
spec:
-
replicas: 3
#
-
minReadySeconds: 30
# , 30s
-
strategy:
-
type: recreate
#
-
#rollingUpdate:## replicas 3, ,pod 2-4
-
# maxSurge: 3 # 3 pod
-
# maxUnavailable: 1 # Unavailable pod
-
selector:
-
matchLabels:
-
name: lykops-dpm
-
software: apache
-
project: lykops
-
app: lykops-dpm
-
version: v1
-
template:
-
metadata:
-
labels:
-
name: lykops-dpm
-
software: apache
-
project: lykops
-
app: lykops-dpm
-
version: v1
-
spec:
-
terminationGracePeriodSeconds: 60
##k8s SIGTERM , 、 , 30
-
containers:
-
- name: lykops-dpm
-
image: web:apache
-
command: [
"sh",
"/etc/run.sh" ]
-
ports:
-
- containerPort: 80
-
name: http
-
protocol: TCP
-
resources:
-
requests:
-
cpu: 0.05
-
memory: 16Mi
-
limits:
-
cpu: 0.1
-
memory: 32Mi
-
livenessProbe:
#livenessProbe K8S pod , kill , , RS 。
-
httpGet:
-
path: /
-
port: 80
-
scheme: HTTP
-
initialDelaySeconds: 30
-
timeoutSeconds: 5
-
successThreshold: 1
-
failureThreshold: 5
-
readinessProbe:
#readinessProbe K8S pod , , , command, httpGet。
-
httpGet:
-
path: /
-
port: 80
-
scheme: HTTP
-
initialDelaySeconds: 30
-
timeoutSeconds: 5
-
successThreshold: 1
-
failureThreshold: 5
strategy type
recreate rollingUpdate。recreate-- pod, ; rollingUpdate-- , , , , pod , 。
, 。recreate , , ; rollingUpdate , , 。
maxSurge maxUnavailable
maxSurge: 1 1 pod
maxUnavailable:1 Unavailable pod 。 replicas 3, ,pod 2-4 terminationGracePeriodSeconds
k8s SIGTERM , 、 , 30 。
, k8s pre-stop lifecycle hook , SIGTERM 。
livenessProbe readinessProbe
livenessProbe K8S pod , kill , , RS 。
readinessProbe K8S pod , , , command, httpGet。 java web , tomcat , spring , 。 spring boot , actuator /health , 。
readinessProbe.initialDelaySeconds ,livenessProbe.initialDelaySeconds + 。