Deployment
概要
宣言したテンプレートに沿って作成された Pod が常に一定数クラスタ内に存在する状態を維持するリソースである. テンプレートは Pod の定義そのものであり,これが変更されるたびに Deployment は Pod を削除・再作成することで常に指定した状態を維持するよう務める.
例
以下,nginx 1.14 の Pod が常に3つクラスタ内に存在する状態を維持するDeploymentである.
code:yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80
上記を適用すると,その結果作成された Deployment は template に記述された定義に沿って作成された Pod が常に replicas 個,つまり3つ存在する状態を維持する. 次に, Podの数を4つに増やしたいとする.このとき, replicas を3から4に増加させ再び yaml をクラスタに適用すると,新たに Pod が1つ作成され,合計4つとなる.
nginxのバージョンを1.15に上げたいとする. image のタグを1.15に書き換えてクラスタに適用すると,1.14が動いていたPodがすべて削除されnginx 1.15が動くPodが4つ新たに作成される.
参考