当前位置: 首页 > news >正文

通过一个实际例子理解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:         <none>
Host Port:    <none>
Environment:  <none>
Mounts:       <none>

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:

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章:

  • Centos7 Gitea安装教程 - 一款易搭建,运行快的Git服务器
  • LOJ #2058「TJOI / HEOI2016」求和
  • Java核心(五)深入理解BIO、NIO、AIO
  • 苏宁:我们开发百度小程序遇到的那些“坑”
  • EVCache缓存在 Spring Boot中的实战
  • php标签语句
  • 服务器基础知识
  • laravel with 查询列表限制条数
  • 进程与线程(三)——进程/线程间通信
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • c/c++再学习:查找算法了解
  • MFC限制edit控件的字符输入长度
  • Developing avb
  • 12
  • 「镁客早报」苹果HomePod音箱国行版明年国内推出,售价2799;一加与英国最大移动运营商EE达成战略合作...
  • $translatePartialLoader加载失败及解决方式
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【EOS】Cleos基础
  • Brief introduction of how to 'Call, Apply and Bind'
  • idea + plantuml 画流程图
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Js基础知识(四) - js运行原理与机制
  • React-生命周期杂记
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 百度小程序遇到的问题
  • 简单实现一个textarea自适应高度
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 实战|智能家居行业移动应用性能分析
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一天一个设计模式之JS实现——适配器模式
  • 用Python写一份独特的元宵节祝福
  • 追踪解析 FutureTask 源码
  • 阿里云服务器购买完整流程
  • 交换综合实验一
  • #预处理和函数的对比以及条件编译
  • $(selector).each()和$.each()的区别
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (42)STM32——LCD显示屏实验笔记
  • (Java数据结构)ArrayList
  • (蓝桥杯每日一题)love
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (转)socket Aio demo
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .cfg\.dat\.mak(持续补充)
  • .net Stream篇(六)
  • .net 调用php,php 调用.net com组件 --
  • .NET 指南:抽象化实现的基类
  • .NET单元测试
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .py文件应该怎样打开?
  • /bin/rm: 参数列表过长"的解决办法
  • [100天算法】-不同路径 III(day 73)
  • [Android] 240204批量生成联系人,短信,通话记录的APK