今回は、前回デプロイした Deployment に変更を加えて見ようと思います。
前回記事 -> https://qiita.com/komiyasa/items/f9181c2f849a00d4e52b
Deployment したものの確認
kubectl describe
コマンドを使用して、前回デプロイしたももの詳細を確認します。
$ kubectl describe deploy nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Fri, 22 Nov 2019 03:44:51 +0000
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 1
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replica...
Selector: app=nginx-pod
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx-pod
Containers:
nginx:
Image: nginx:1.14
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-5c987f56f6 (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 32s deployment-controller Scaled up replica set nginx-deployment-5c987f56f6 to 3
上記の Old/New ReplicaSets:
を見てみましょう。Old と New という ReplicaSet があります。これは Deployment が内部で ReplicaSet のバージョン情報を持っていることを意味しています。
New にセットされている文字が nginx-deployment-5c987f56f6
という ReplicaSet ですが、Deployment を変更するとどのようになるのか、見ていきたいと思います。
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
このテンプレートのイメ―ジは image: nginx:1.14
と定義されていますが、これを 1.15
に変更してみます。
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.15
ports:
- containerPort: 80
変更したら前回と同じように、kubectl apply
コマンドを使用してデプロイしてみます。
$ kubectl apply -f Deployment/deploysample.yaml
deployment.apps/nginx-deployment configured
既にデプロイされた Pod 等をデプロイする場合には Created
ではなく、configured
になります。
では詳細を確認します。
$ kubectl describe deploy nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Fri, 22 Nov 2019 03:44:51 +0000
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 2
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replica...
Selector: app=nginx-pod
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx-pod
Containers:
nginx:
Image: nginx:1.15
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-798b8d88df (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 9m4s deployment-controller Scaled up replica set nginx-deployment-5c987f56f6 to 3
Normal ScalingReplicaSet 110s deployment-controller Scaled up replica set nginx-deployment-798b8d88df to 1
Normal ScalingReplicaSet 96s deployment-controller Scaled down replica set nginx-deployment-5c987f56f6 to 2
Normal ScalingReplicaSet 96s deployment-controller Scaled up replica set nginx-deployment-798b8d88df to 2
Normal ScalingReplicaSet 82s deployment-controller Scaled down replica set nginx-deployment-5c987f56f6 to 1
Normal ScalingReplicaSet 82s deployment-controller Scaled up replica set nginx-deployment-798b8d88df to 3
Normal ScalingReplicaSet 67s deployment-controller Scaled down replica set nginx-deployment-5c987f56f6 to 0
出力結果を見てみると、NewReplicaSet に入っている値が nginx-deployment-798b8d88df
に変わっています。
これは、ReplicaSet / Pod が更新され、新しいデプロイが完了したということが分かります。
kubectl get replicaset
コマンドを実行して、ReplicaSet の詳細を確認します。
$ kubectl get replicaset --output=wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
nginx-deployment-5c987f56f6 0 0 0 17m nginx nginx:1.14 app=nginx-pod,pod-template-hash=5c987f56f6
nginx-deployment-798b8d88df 3 3 3 9m51s nginx nginx:1.15 app=nginx-pod,pod-template-hash=798b8d88df
新しい Deployment があり、その Image が更新されているのが確認出来ました。
参考
Deployments
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/