DESCRIPTION: Specification of the desired behavior of the Deployment.
DeploymentSpec is the specification of the desired behavior of the Deployment.
FIELDS: minReadySeconds<integer> Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)
paused<boolean> Indicates that the deployment is paused.
progressDeadlineSeconds<integer> The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.
replicas<integer> Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.
revisionHistoryLimit<integer> The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.
selector <Object> -required- Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels.
strategy<Object> The deployment strategy to use to replace existing pods with new ones.
template <Object> -required- Template describes the pods that will be created.
[root@k8s-master-node1 ~]#
1
查看pod
1 2 3 4 5 6 7 8 9 10
[root@k8s-master-node1 ~/yaml/test]# kubectl get pod NAME READY STATUS RESTARTS AGE ingress-demo-app-694bf5d965-q4l7m 1/1 Terminating 0 23h ingress-demo-app-694bf5d965-v28sl 1/1 Running 0 3m9s ingress-demo-app-694bf5d965-v652j 1/1 Running 0 23h nfs-client-provisioner-dc5789f74-nnk77 1/1 Running 1 (8h ago) 22h nginx-deployment-66b6c48dd5-5hhjq 1/1 Running 0 3m9s nginx-deployment-66b6c48dd5-9z2n5 1/1 Running 0 3m19s nginx-deployment-66b6c48dd5-llq7c 1/1 Running 0 9m10s [root@k8s-master-node1 ~/yaml/test]#
1
查看deployments
1 2 3 4 5 6
[root@k8s-master-node1 ~/yaml/test]# kubectl get deployments.apps NAME READY UP-TO-DATE AVAILABLE AGE ingress-demo-app 2/2 2 2 23h nfs-client-provisioner 1/1 1 1 22h nginx-deployment 3/3 3 3 9m45s [root@k8s-master-node1 ~/yaml/test]#
[root@k8s-master-node1 ~/yaml/test]# kubectl rollout status deployment.v1.apps/nginx-deployment Waiting for deployment "nginx-deployment" rollout to finish: 1 out of 3 new replicas have been updated... Waiting for deployment "nginx-deployment" rollout to finish: 1 out of 3 new replicas have been updated... Waiting for deployment "nginx-deployment" rollout to finish: 1 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: 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 [root@k8s-master-node1 ~/yaml/test]#
[root@k8s-master-node1 ~/yaml/test]# kubectl describe deployments Name: ingress-demo-app Namespace: default CreationTimestamp: Tue, 16 Nov 2021 13:28:26 +0800 Labels: app=ingress-demo-app Annotations: deployment.kubernetes.io/revision: 1 Selector: app=ingress-demo-app Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: app=ingress-demo-app Containers: whoami: Image: traefik/whoami:v1.6.1 Port: 80/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetAvailable Available True MinimumReplicasAvailable OldReplicaSets: <none> NewReplicaSet: ingress-demo-app-694bf5d965 (2/2 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 23h deployment-controller Scaled up replica set ingress-demo-app-694bf5d965 to 2
Name: nfs-client-provisioner Namespace: default CreationTimestamp: Tue, 16 Nov 2021 14:07:33 +0800 Labels: app=nfs-client-provisioner Annotations: deployment.kubernetes.io/revision: 1 Selector: app=nfs-client-provisioner Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: Recreate MinReadySeconds: 0 Pod Template: Labels: app=nfs-client-provisioner Service Account: nfs-client-provisioner Containers: nfs-client-provisioner: Image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2 Port: <none> Host Port: <none> Environment: PROVISIONER_NAME: k8s-sigs.io/nfs-subdir-external-provisioner NFS_SERVER: 192.168.1.66 NFS_PATH: /nfs/ Mounts: /persistentvolumes from nfs-client-root (rw) Volumes: nfs-client-root: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 192.168.1.66 Path: /nfs/ ReadOnly: false Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetAvailable Available True MinimumReplicasAvailable OldReplicaSets: <none> NewReplicaSet: nfs-client-provisioner-dc5789f74 (1/1 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 23h deployment-controller Scaled up replica set nfs-client-provisioner-dc5789f74 to 1
Name: nginx-deployment Namespace: default CreationTimestamp: Wed, 17 Nov 2021 12:54:46 +0800 Labels: app=nginx Annotations: deployment.kubernetes.io/revision: 3 kubernetes.io/change-cause: kubectl deployment.apps/nginx-deployment set image deployment.v1.apps/nginx-deployment nginx=nginx:1.20.1 --record=true Selector: app=nginx 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 Containers: nginx: Image: nginx:1.16.1 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-559d658b74 (3/3 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 30m deployment-controller Scaled up replica set nginx-deployment-66b6c48dd5 to 3 Normal ScalingReplicaSet 5m55s deployment-controller Scaled up replica set nginx-deployment-58b9b8ff79 to 1 Normal ScalingReplicaSet 5m27s deployment-controller Scaled down replica set nginx-deployment-66b6c48dd5 to 2 Normal ScalingReplicaSet 5m27s deployment-controller Scaled up replica set nginx-deployment-58b9b8ff79 to 2 Normal ScalingReplicaSet 5m deployment-controller Scaled down replica set nginx-deployment-66b6c48dd5 to 1 Normal ScalingReplicaSet 5m deployment-controller Scaled up replica set nginx-deployment-58b9b8ff79 to 3 Normal ScalingReplicaSet 4m56s deployment-controller Scaled down replica set nginx-deployment-66b6c48dd5 to 0 Normal ScalingReplicaSet 78s deployment-controller Scaled up replica set nginx-deployment-559d658b74 to 1 Normal ScalingReplicaSet 63s deployment-controller Scaled down replica set nginx-deployment-58b9b8ff79 to 2 Normal ScalingReplicaSet 63s deployment-controller Scaled up replica set nginx-deployment-559d658b74 to 2 Normal ScalingReplicaSet 49s (x3 over 61s) deployment-controller (combined from similar events): Scaled down replica set nginx-deployment-58b9b8ff79 to 0 [root@k8s-master-node1 ~/yaml/test]# [root@k8s-master-node1 ~/yaml/test]# [root@k8s-master-node1 ~/yaml/test]#
1
3) Deployment历史记录
查看历史
1 2 3 4 5 6 7 8
[root@k8s-master-node1 ~/yaml/test]# kubectl rollout history deployment.v1.apps/nginx-deployment deployment.apps/nginx-deployment REVISION CHANGE-CAUSE 1 <none> 2 kubectl deployment.apps/nginx-deployment set image deployment.v1.apps/nginx-deployment nginx=nginx:1.20.1 --record=true 3 kubectl deployment.apps/nginx-deployment set image deployment.v1.apps/nginx-deployment nginx=nginx:1.20.1 --record=true
[root@k8s-master-node1 ~/yaml/test]#
1
回滚到上次
1 2 3 4 5 6 7
[root@k8s-master-node1 ~/yaml/test]# kubectl rollout undo deployment.v1.apps/nginx-deployment deployment.apps/nginx-deployment rolled back [root@k8s-master-node1 ~/yaml/test]# kubectl rollout status deployment.v1.apps/nginx-deployment 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 [root@k8s-master-node1 ~/yaml/test]#
1
回滚到指定版本
1 2 3 4 5 6 7 8 9 10
[root@k8s-master-node1 ~/yaml/test]# kubectl rollout undo deployment.v1.apps/nginx-deployment --to-revision=3 deployment.apps/nginx-deployment rolled back [root@k8s-master-node1 ~/yaml/test]# kubectl rollout status deployment.v1.apps/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 [root@k8s-master-node1 ~/yaml/test]#
1
4)缩放 Deployment
扩容到十个pod
1 2 3 4 5 6 7 8 9
[root@k8s-master-node1 ~/yaml/test]# kubectl scale deployment.v1.apps/nginx-deployment --replicas=10 deployment.apps/nginx-deployment scaled [root@k8s-master-node1 ~/yaml/test]# [root@k8s-master-node1 ~/yaml/test]# kubectl get deployments.apps NAME READY UP-TO-DATE AVAILABLE AGE ingress-demo-app 0/2 2 0 24h nfs-client-provisioner 0/1 1 0 23h nginx-deployment 5/10 10 5 45m [root@k8s-master-node1 ~/yaml/test]#
1
假设启用水平自动缩放 Pod在集群中,可以为 Deployment 设置自动缩放器,并选择最小和最大 要基于现有 Pods 的 CPU 利用率运行的 Pods。