通过一个实际例子理解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:
在 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 - 水平自动伸缩相关推荐
- k8s 查看ip地址属于哪个pod_一个简单的例子理解Kubernetes的三种IP地址类型
很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚. 本文我们通过一个最简单的例子来学习. 用如下命令行创建一个基于nginx的deployment ...
- 通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法
Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它. 而容器产生的数据,会随着Pod消亡而自动 ...
- 用一个实际例子理解Docker volume工作原理
要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理.Docker镜像是由多个文件系统的只读层叠加而成.当一个容器通过命令docker run启动时,Docker会加载只读 ...
- 用一个实际例子理解Docker volume工作原理 1
要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理.Docker镜像是由多个文件系统的只读层叠加而成.当一个容器通过命令docker run启动时,Docker会加载只读 ...
- 初识随机规划:用一个小例子理解随机规划
文章目录 初识随机规划:一个小小例子 生产计划的例子 参数的不确定性 随机规划模型(Stochastic Programming) Python调用Gurobi求解随机规划模型 参考文献 Olittl ...
- 通过一个简单例子理解 RecyclerView.ItemDecoration
一.前言 RecyclerView 是从5.0推出的 MD 风格的控件.RecyclerView 之前有 ListView.GridView,但是功能很有限,例如 ListView 只能实现垂直方向上 ...
- 一个小例子理解什么是卷积
别怕,"卷积"其实很简单 2018年01月17日 13:15:52 阅读数:17600 标签: 机器学习 信号系统 概率统计 统计学习 深度学习 更多 个人分类: Data Sci ...
- 通过一个实际例子理解Angular rxjs Observable的异步行为
源代码: ngOnInit(): void {const a = new Observable((observer) => {observer.next(1);observer.next(2); ...
- 如何使用Kubernetes里的NetworkPolicy
创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件. 第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤. ...
最新文章
- 基于环信的仿QQ即时通讯的简单实现
- autosar工具链_Autosar开发与手写代码开发的区别
- SourceTree超前一个版本,落后N个版本
- 20年备受关注的6款数据工具!谁最好用?毫无争议的答案来了
- [Java] 蓝桥杯BASIC-19 基础练习 完美的代价
- python垂直输出_Python实现图像的垂直投影示例
- python课堂点名_Python制作课堂点名器,原来还能这么玩!
- Java基础知识拾遗—集合篇之List
- 通过iMazing将Safari浏览器的书签导出至电脑
- 原生JS实现canvas移动端电子签名板/画板
- 分布式集群中大数据的中位数
- matlab 多变量最小值,【求助】用fmincon求含有多组变量的目标函数的最小值问题...
- Matlab突然打不开,运行后一闪就消失了,任务管理器也没有的解决办法
- php输出绝对值,PHP实现找出有序数组中绝对值最小的数算法分析
- 干货 | 京东云弹性伸缩功能实践
- 微x模块怎么导入主题_模块
- linux $0命令,Linux:awk命令详解
- 3D游戏设计-牧师与魔鬼_动作分离版
- 天融信上网行为管理如何做短信验证?
- GiB 与 GB 的区别
热门文章
- 对“计划”的进一步阐述和对回复的回复 : )
- surefire 拉起 junit 单元测试类 源码阅读(二)
- JVM调优总结(二)
- Django(part21)--models字段
- python观察日志(part3)--绘制科赫雪花图
- 《复杂》读书笔记(part7)--遗传算法
- Python中都全局变量和局部变量
- 变声原理:卷积和传递函数
- matlab图像去毛刺_信号去毛刺,去零漂
- jMeter Thread group 对应的 constant timer