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:

在 SAP CCV2 中的应用

if we reduce the replica of jsapps to 1, the issue will be gone?

If so, for a short-term workaround, one option would be to set the jsapps’s replica to 1, and vertically scale it up to have more CPU/memory.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

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

  1. k8s 查看ip地址属于哪个pod_一个简单的例子理解Kubernetes的三种IP地址类型

    很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚. 本文我们通过一个最简单的例子来学习. 用如下命令行创建一个基于nginx的deployment ...

  2. 通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法

    Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它. 而容器产生的数据,会随着Pod消亡而自动 ...

  3. 用一个实际例子理解Docker volume工作原理

    要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理.Docker镜像是由多个文件系统的只读层叠加而成.当一个容器通过命令docker run启动时,Docker会加载只读 ...

  4. 用一个实际例子理解Docker volume工作原理 1

    要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理.Docker镜像是由多个文件系统的只读层叠加而成.当一个容器通过命令docker run启动时,Docker会加载只读 ...

  5. 初识随机规划:用一个小例子理解随机规划

    文章目录 初识随机规划:一个小小例子 生产计划的例子 参数的不确定性 随机规划模型(Stochastic Programming) Python调用Gurobi求解随机规划模型 参考文献 Olittl ...

  6. 通过一个简单例子理解 RecyclerView.ItemDecoration

    一.前言 RecyclerView 是从5.0推出的 MD 风格的控件.RecyclerView 之前有 ListView.GridView,但是功能很有限,例如 ListView 只能实现垂直方向上 ...

  7. 一个小例子理解什么是卷积

    别怕,"卷积"其实很简单 2018年01月17日 13:15:52 阅读数:17600 标签: 机器学习 信号系统 概率统计 统计学习 深度学习 更多 个人分类: Data Sci ...

  8. 通过一个实际例子理解Angular rxjs Observable的异步行为

    源代码: ngOnInit(): void {const a = new Observable((observer) => {observer.next(1);observer.next(2); ...

  9. 如何使用Kubernetes里的NetworkPolicy

    创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件. 第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤. ...

最新文章

  1. 基于环信的仿QQ即时通讯的简单实现
  2. autosar工具链_Autosar开发与手写代码开发的区别
  3. SourceTree超前一个版本,落后N个版本
  4. 20年备受关注的6款数据工具!谁最好用?毫无争议的答案来了
  5. [Java] 蓝桥杯BASIC-19 基础练习 完美的代价
  6. python垂直输出_Python实现图像的垂直投影示例
  7. python课堂点名_Python制作课堂点名器,原来还能这么玩!
  8. Java基础知识拾遗—集合篇之List
  9. 通过iMazing将Safari浏览器的书签导出至电脑
  10. 原生JS实现canvas移动端电子签名板/画板
  11. 分布式集群中大数据的中位数
  12. matlab 多变量最小值,【求助】用fmincon求含有多组变量的目标函数的最小值问题...
  13. Matlab突然打不开,运行后一闪就消失了,任务管理器也没有的解决办法
  14. php输出绝对值,PHP实现找出有序数组中绝对值最小的数算法分析
  15. 干货 | 京东云弹性伸缩功能实践
  16. 微x模块怎么导入主题_模块
  17. linux $0命令,Linux:awk命令详解
  18. 3D游戏设计-牧师与魔鬼_动作分离版
  19. 天融信上网行为管理如何做短信验证?
  20. GiB 与 GB 的区别

热门文章

  1. 对“计划”的进一步阐述和对回复的回复 : )
  2. surefire 拉起 junit 单元测试类 源码阅读(二)
  3. JVM调优总结(二)
  4. Django(part21)--models字段
  5. python观察日志(part3)--绘制科赫雪花图
  6. 《复杂》读书笔记(part7)--遗传算法
  7. Python中都全局变量和局部变量
  8. 变声原理:卷积和传递函数
  9. matlab图像去毛刺_信号去毛刺,去零漂
  10. jMeter Thread group 对应的 constant timer