、展開
メイン関数の展開を自動的にコンテナアプリケーションの複数のコピーを展開し、連続コピーの数を監視し、常にクラスタ内のコピーのユーザが指定した数を維持することです
1.設定パラメータ
セレクタ(セレクタ):
.spec.selectorデプロイメント管理ポッドの範囲を定める、ラベルセレクタを指定するために使用されるオプションのフィールドです。指定された場合は、.spec.selectorは.spec.template.metadata.labelsと一致する必要があります、またはそれはAPIを拒否されます。.spec.selectorが指定されていない場合は、.spec.selector.matchLabelsのデフォルトは.spec.template.metadata.labelsです。
2.Deployment設定例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 58s
# kubectl get pods
NAME READY STATUS RESTARTS AGE
liveness-http 0/1 CrashLoopBackOff 473 28h
nginx-deployment-6dd86d77d-6hk7w 1/1 Running 0 71s
nginx-deployment-6dd86d77d-mxr8l 1/1 Running 0 71s
nginx-deployment-6dd86d77d-xxhpd 1/1 Running 0 71s
# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-deployment-6dd86d77d-6hk7w 1/1 Running 0 2m5s app=nginx,pod-template-hash=6dd86d77d
nginx-deployment-6dd86d77d-mxr8l 1/1 Running 0 2m5s app=nginx,pod-template-hash=6dd86d77d
nginx-deployment-6dd86d77d-xxhpd 1/1 Running 0 2m5s app=nginx,pod-template-hash=6dd86d77d
展開の作成またはさらにreplicaSetを引き継ぐ場合は、展開コントローラが自動的にポッド用ポッドのテンプレートのハッシュラベルを追加します。目的は、繰り返し子の展開のポッド名を防ぐためですさらにreplicaSet
アップグレードを3.Deployment
nginxのは、現在のバージョン1.9.1を反映するように更新されます、あなたはkubectl設定された画像コマンドによる新しいイメージのバージョンの展開を設定することができます
# kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
deployment.extensions/nginx-deployment image updated
# kubectl rollout status deployment/nginx-deployment
Waiting for deployment "nginx-deployment" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deployment" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deployment" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deployment" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "nginx-deployment" rollout to finish: 1 old replicas are pending termination...
deployment "nginx-deployment" successfully rolled out
# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deployment-6dd86d77d 0 0 0 70m
nginx-deployment-784b7cc96d 3 3 3 21m
# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-784b7cc96d-4575d 1/1 Running 0 2m13s
nginx-deployment-784b7cc96d-c98s8 1/1 Running 0 91s
nginx-deployment-784b7cc96d-r6sm9 1/1 Running 0 2m51s
#此处名称已经更新
ビューの展開の詳細
# kubectl describe deployment/nginx-deployment
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 17m deployment-controller Scaled up replica set nginx-deployment-784b7cc96d to 1
Normal ScalingReplicaSet 17m deployment-controller Scaled down replica set nginx-deployment-6dd86d77d to 2
Normal ScalingReplicaSet 17m deployment-controller Scaled up replica set nginx-deployment-784b7cc96d to 2
Normal ScalingReplicaSet 16m deployment-controller Scaled down replica set nginx-deployment-6dd86d77d to 1
Normal ScalingReplicaSet 16m deployment-controller Scaled up replica set nginx-deployment-784b7cc96d to 3
Normal ScalingReplicaSet 16m deployment-controller Scaled down replica set nginx-deployment-6dd86d77d to 0
もう一つの方法は、kubectl編集の展開設定を変更するには、updateコマンドを使用することです:
#kubectl編集展開/展開、nginxの
4.Deploymentバージョンロールバック
Viewの展開には、レコードをアップグレード
# kubectl rollout history deployment/nginx-deployment
deployment.extensions/nginx-deployment
REVISION CHANGE-CAUSE
1 <none>
2 <none>
- デフォルトでは、システムに前の2つの展開の展開履歴が保存されてkubernetes、あなたは保存する変更の数に改訂改訂履歴の制限を変更することができます。
- したがって、あなたがの変更リビジョンを見ることができない、展開を作成するときには増加--recordパラメータはありません。展開を作成するプラス--recordするときは、各バージョンによって使用されるコマンドパラメータを見ることができます。
- 更新操作の展開が(例えば.spec.templateなど)ポッドテンプレートの展開は、新しいリビジョンを作成するために変更される場合に限り、つまり、展開時にトリガされ、別の更新操作(コピーの数を増加させる)となります展開はポッドテンプレートセクションの展開で以前のバージョンにロールバックは、ロールバックされたときにことを意味し、更新操作をトリガしません。
詳細についてはバージョンの機能を見ます
# kubectl rollout history deployment/nginx-deployment --revision=2
以前のバージョンにロールバック
# kubectl rollout undo deployment/nginx-deployment
deployment.extensions/nginx-deployment rolled back
また、バージョン履歴--to-revisionパラメータを指定することができます
# kubectl rollout undo deployment/nginx-deployment --to-revision=2
deployment.extensions/nginx-deployment rolled back
5.Deployment一時停止と再開
時には配備構成変更のために必要な回数は、その更新をトリガー頻繁を避けるために、あなたは、設定変更を行い、更新プログラムの展開を一時停止することができます。
展開が一時停止中にロールバックすることができないことに留意すべきです
更新操作の展開を一時停止
# kubectl rollout pause deployment/nginx-deployment
deployment.extensions/nginx-deployment paused
アップデートの回復
# kubectl rollout resume deploy nginx-deployment
deployment.extensions/nginx-deployment resumed
6.Deployment拡大
# kubectl scale deploy nginx-deployment --replicas=5
deployment.extensions/nginx-deployment scaled
# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-784b7cc96d-9z8df 1/1 Running 0 52m
nginx-deployment-784b7cc96d-dqfv4 1/1 Running 0 8s
nginx-deployment-784b7cc96d-q4jcw 1/1 Running 0 52m
nginx-deployment-784b7cc96d-rs8fn 1/1 Running 0 34m
nginx-deployment-784b7cc96d-v5drb 1/1 Running 0 8s
二、DaemonSet
インスタンスのコピーを管理するためのDaemonSetは、クラスタ内の各ノード上でのみポッドを実行しています。
該当するシーン:
- 各ノード上のGlusterFSセファロストレージやストレージのプロセスを実行します
- ログ収集プログラムは、例えば、各ノード上で実行されます:Fluentd、Logstash
- 性能監視デーモンは、例えば、各ノード上で実行される:プロメテウスノード輸出、collectd
1. Redisの-filebeat例を作成しますdaemonset
# cat redis-filebeat-ds.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: redis
role: logstor
template:
metadata:
labels:
app: redis
role: logstor
spec:
containers:
- name: redis
image: redis:4.0-alpine
ports:
- name: redis
containerPort: 6379
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: filebeat-ds
namespace: default
spec:
selector:
matchLabels:
app: filebeat
release: stable
template:
metadata:
labels:
app: filebeat
release: stable
spec:
containers:
- name: filebeat
image: ikubernetes/filebeat:5.6.5-alpine
env:
- name: REDIS_HOST
value: redis.default.svc.cluster.local
- name: REDIS_LOG_LEVEL
value: info
# kubectl expose deployment redis --port=6379
# kubectl get ds
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
filebeat-ds 2 2 2 2 2 <none> 41s
各ノード上でポッドを作成します
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
filebeat-ds-ss4jx 1/1 Running 0 70s 10.44.0.5 k8s-2 <none> <none>
filebeat-ds-z5bdx 1/1 Running 0 70s 10.36.0.4 k8s-3 <none> <none>
redis-58b9f5776-sd2tc 1/1 Running 0 70s 10.36.0.3 k8s-3 <none> <none>
更新2.DaemonSet
- 設定ファイルの更新を変更することにより、利用kubectlが適用されます
- またはkubectl編集を使用します
# kubectl edit ds/filebeat-ds
ミラーの更新バージョン
# kubectl set image daemonsets filebeat-ds filebeat=ikubernetes/filebeat:5.6.6-alpine
daemonset.extensions/filebeat-ds image updated
ビューの更新状況
# kubectl get pods -w
NAME READY STATUS RESTARTS AGE
filebeat-ds-9l84r 0/1 ContainerCreating 0 2s
filebeat-ds-z5bdx 1/1 Running 0 17m
redis-58b9f5776-sd2tc 1/1 Running 0 17m
filebeat-ds-9l84r 1/1 Running 0 20s
filebeat-ds-z5bdx 1/1 Terminating 0 18m
filebeat-ds-z5bdx 0/1 Terminating 0 18m
filebeat-ds-z5bdx 0/1 Terminating 0 18m
filebeat-ds-z5bdx 0/1 Terminating 0 18m
filebeat-ds-psdgb 0/1 Pending 0 0s
filebeat-ds-psdgb 0/1 Pending 0 0s
filebeat-ds-psdgb 0/1 ContainerCreating 0 0s
filebeat-ds-psdgb 1/1 Running 0 19s
三、ポッドの膨張体積の減少
1.手動スケーリング能力
部数を設定kubectlスケールを使用して
# kubectl scale deployment nginx-deployment --replicas=5
自動スケーリング能力HPA
四、StatefulSet
ます。https://blog.51cto.com/lullaby/2406041で再現