资讯专栏INFORMATION COLUMN

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

tinylcy / 1784人阅读

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33113.html

相关文章

  • 通过一个实际例子理解Kubernetespod自动scale - 水平自动伸缩

    摘要:命令用于程序在负载加重或缩小时进行扩容或缩小,我们通过一些实际例子来观察命令到底能达到什么效果。 kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果。 命令行创建一个deployment: kubectl run jerry-nginx --image=nginx:1.12.2 showImg(htt...

    superw 评论0 收藏0
  • 通过一个实际例子理解Kubernetespod自动scale - 水平自动伸缩

    摘要:命令用于程序在负载加重或缩小时进行扩容或缩小,我们通过一些实际例子来观察命令到底能达到什么效果。 kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果。 命令行创建一个deployment: kubectl run jerry-nginx --image=nginx:1.12.2 showImg(htt...

    Snailclimb 评论0 收藏0
  • Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器高可

    摘要:后面几个状态的字段都是,其中是节点上一个重要的模块,负责维护和管理运行于该节点上的所有容器,确保的运行状态与使用者期望一致。 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Docker hub上。 这篇文章作为这个主题的下半部分,将会介绍如何...

    KitorinZero 评论0 收藏0
  • Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器高可

    摘要:后面几个状态的字段都是,其中是节点上一个重要的模块,负责维护和管理运行于该节点上的所有容器,确保的运行状态与使用者期望一致。 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Docker hub上。 这篇文章作为这个主题的下半部分,将会介绍如何...

    SimpleTriangle 评论0 收藏0
  • Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器高可

    摘要:后面几个状态的字段都是,其中是节点上一个重要的模块,负责维护和管理运行于该节点上的所有容器,确保的运行状态与使用者期望一致。 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Docker hub上。 这篇文章作为这个主题的下半部分,将会介绍如何...

    ls0609 评论0 收藏0

发表评论

0条评论

tinylcy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<