今回は Deployment を実行する方法を見ていきたいと思います。Kubernetes の Deployment では以下3点のことを実行するみたいです。
- Pod のロールアウト/ロールバック
- ロールアウト方式の指定
- ロールアウトの条件や速度の制御
つまり、Kubernetes における Deployment とは、コンテナーイメージのバージョンアップがあった際に、新しい ReplicaSet を作成し、準備新しいPod に置き換えてロールアウトする仕組み、とも解釈することができます。
ReplicaSet とよく似ているように思いますが、下記の図のような概念になるため、Deployment は ReplicaSet を包括した少し大きな枠組みと理解することが出来ます。
マニフェストファイルの作成
Deployment を定義するマニフェストファイルは以下のような形になります。kind
の部分で Deployment を指定する様です。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80
Deployment の実行
前回記事で取り上げた、ReplicaSet を構築する方法と良く似ています。このマニフェストファイルを kubeclt apply -f Deployment/nginx-deployment.yaml
で実行してみましょう。
$ kubectl apply -f deploysample.yaml
deployment.apps/nginx-deployment created
クラスター内の Deployment の一覧を確認するには、以下のコマンドを実行します。
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 2m51s
また、get replicaset,pod
を実行すると、作成された ReplicaSet / Pod を確認することができます。Deployment のマニフェストファイルを実行するだけでどちらもデプロイできるのでとても便利ですね。
$ kubectl get replicaset,pod
NAME DESIRED CURRENT READY AGE
replicaset.extensions/nginx-deployment-5c987f56f6 3 3 3 9m22s
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-5c987f56f6-4kzbk 1/1 Running 0 9m22s
pod/nginx-deployment-5c987f56f6-94pkp 1/1 Running 0 9m22s
pod/nginx-deployment-5c987f56f6-h46nc 1/1 Running 0 9m22s
Deployment の実行方法について見てきました。次回は、Deployment を変更する方法について詳しく見ていきたいと思います。
参考
Deployments
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/