千家信息网

通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果。命令行创建一个deployment:kubectl run j
千家信息网最后更新 2026年11月03日通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩

kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果。

命令行创建一个deployment:

kubectl run jerry-nginx --image=nginx:1.12.2

kubectl get deploy查看刚刚创建的deployment:


自动被deployment创建的pod:

kubectl get pod:


使用下列命令查看生成的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:

  • lastTransitionTime: 2018-11-29T08:29:07Z
    lastUpdateTime: 2018-11-29T08:29:07Z
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available

  • lastTransitionTime: 2018-11-29T08:29:06Z
    lastUpdateTime: 2018-11-29T08:29:07Z
    message: ReplicaSet "jerry-nginx-69fd9f6c4" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
    observedGeneration: 1
    readyReplicas: 1
    replicas: 1
    updatedReplicas: 1

另一个有用的命令:

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:
Host Port:
Environment:
Mounts:
Volumes:
Conditions:
Type Status Reason


Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets:
NewReplicaSet: jerry-nginx-69fd9f6c4 (1/1 replicas created)
Events:
Type Reason Age From Message


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的原创文章,请关注公众号"汪子熙":


命令 水平 生成 例子 实际 明细 下图 两个 事件 公众 原创文章 参数 实例 小时 就是 很快 意思 手动 效果 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技金融是不是互联网金融 互联网科技垄断 互联网的科技创新 贷财互联网科技 互联网科技ppt模板 伴你行互联网科技有限公司 掌上梦互联网科技 中国的互联网科技企业的崛起 欧洲十大科技互联网公司 顶级互联网科技成果有哪些 互联网科技公司实习生 互联网科技的全部知识 佛山市拉法互联网科技有限公司 众安科技工业互联网合作 深圳无忧互联网科技 城市宝互联网科技有限公司 21世纪互联网科技成就 张召忠谈中国互联网科技 科技互联网专业工作会议发言稿 互联网科技大佬云集 高科技互联网 中国 科技 互联网 深圳互联网科技怎么样 互联网企业和科技型企业 呼和浩特新华互联网科技学院 锡山区互联网智能科技产品供应 广东工业互联网大赛深圳学泰科技 广州燕处互联网科技有限公司 中国互联网公司的科技投入 互联网科技职业技能培训学校
0