美文网首页Docker容器k8s那点事儿k8s入门
通过一个实际例子理解Kubernetes里pod的自动scale

通过一个实际例子理解Kubernetes里pod的自动scale

作者: _扫地僧_ | 来源:发表于2018-11-29 17:36 被阅读6次

    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: <none>
    Conditions:
    Type Status Reason


    Available True MinimumReplicasAvailable
    Progressing True NewReplicaSetAvailable
    OldReplicaSets: <none>
    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
    ```sd
    
    得到自动创建的replication set:
    ![](https://img.haomeiwen.com/i2085791/45813c64aa3268be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    desired = 3意思就是我们水平扩展时指定的参数3.
    
    即使手动删除一个pod实例,replication set又会很快自动创建一个新的:
    ![](https://img.haomeiwen.com/i2085791/834fe8ffcc36a8d1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    自动创建的新pod:
    ![](https://img.haomeiwen.com/i2085791/c9aae3be6cf247cc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    要获取更多Jerry的原创文章,请关注公众号"汪子熙":
    
    ![](https://img.haomeiwen.com/i2085791/dcc88e58a67cac8c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    相关文章

      网友评论

        本文标题:通过一个实际例子理解Kubernetes里pod的自动scale

        本文链接:https://www.haomeiwen.com/subject/hxgfcqtx.html