kubectl scale命令用于程序在负载加剧或缩小时进行pod扩容或缩小,咱们经过一些实际例子来观察scale命令到底能达到什么效果。nginx
命令行建立一个deployment:shell
kubectl run jerry-nginx --image=nginx:1.12.2
kubectl get deploy查看刚刚建立的deployment: api
自动被deployment建立的pod:ui
kubectl get pod: spa
使用下列命令查看生成的deployment明细:命令行
kubectl get deployment jerry-nginx -o yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: 2018-11-29T08:29:06Z generation: 1 labels: run: jerry-nginx name: jerry-nginx namespace: part-0110 resourceVersion: "7203445" selfLink: /apis/extensions/v1beta1/namespaces/part-0110/deployments/jerry-nginx uid: d5c64f72-f3b0-11e8-b308-a20cb743f347 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 2 selector: matchLabels: run: jerry-nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: run: jerry-nginx spec: containers: - image: nginx:1.12.2 imagePullPolicy: IfNotPresent name: jerry-nginx resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 status: availableReplicas: 1 conditions:rest
另外一个有用的命令:code
kubectl describe deployment jerry-nginx
Name: jerry-nginx Namespace: part-0110 CreationTimestamp: Thu, 29 Nov 2018 16:29:06 +0800 Labels: run=jerry-nginx Annotations: deployment.kubernetes.io/revision: 1 Selector: run=jerry-nginx Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: run=jerry-nginx Containers: jerry-nginx: Image: nginx:1.12.2 Port: <none> Host Port: <none> Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reasonorm
Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: jerry-nginx-69fd9f6c4 (1/1 replicas created) Events: Type Reason Age From Messageblog
Normal ScalingReplicaSet 9m41s deployment-controller Scaled up replica set jerry-nginx-69fd9f6c4 to 1
如今咱们使用下面的命令对deployment进行水平扩展:
kubectl scale deployment jerry-nginx --replicas=3
kubectl get pods -l run=jerry-nginx
下图这个Age为15分钟以前的是第一次建立deployment时生成的,其余两个Age为1分钟以前的是执行了scale命令后自动建立的。
选中一个才建立的pod,查看其事件记录:
kubectl describe pod jerry-nginx-69fd9f6c4-8dpvb
kubectl get replicaset
获得自动建立的replication set:
desired = 3意思就是咱们水平扩展时指定的参数3.
即便手动删除一个pod实例,replication set又会很快自动建立一个新的:
自动建立的新pod:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":