`
JerryWang_SAP
  • 浏览: 1027018 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

通过一个实际例子理解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: <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

得到自动创建的replication set:

 

 

desired = 3意思就是我们水平扩展时指定的参数3.

即使手动删除一个pod实例,replication set又会很快自动创建一个新的:

 

 

自动创建的新pod:

 

 

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

 
0
0
分享到:
评论

相关推荐

    kubernetes-node-linux-amd64.tar.gz

    总结,"kubernetes-node-linux-amd64.tar.gz"是Kubernetes为Linux AMD64架构准备的节点安装包,通过下载、解压、配置和启动服务,我们可以将一个普通的CentOS系统转变为一个能够运行和管理容器的Kubernetes节点。...

    kubernetes-server-linux-amd64.tar

    Kubernetes(简称k8s)是Google开源的一款容器编排系统,它为容器化的应用提供了自动化部署、扩展和管理的解决方案。本篇文章将聚焦于“kubernetes-server-linux-amd64.tar”这一文件,深入解析其在Linux平台上的...

    kubernetes-server-linux-amd64.tar.gz 安装包

    2. **etcd**:etcd是一个分布式的、一致性的键值存储,用于保存Kubernetes集群的状态。所有配置更改首先被提交到etcd,然后传播到其他组件。 3. **kube-scheduler**:调度器根据资源需求、策略和其他因素将未调度的...

    kubernetes-client-linux-amd64.tar.gz

    Kubernetes是一个开源的容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。它提供了一种声明式的方法来管理容器化应用的生命周期,确保服务的高可用性和可伸缩性。`kubernetes-client`是Kubernetes的核心...

    kubernetes-server-linux-amd64-v1.15.4.tar.gz

    9. **伸缩和调度**:Kubernetes的Horizontal Pod Autoscaler(HPA)可以根据资源使用情况自动调整Pod的数量,而Scheduler则负责根据节点资源和Pod规格将Pod调度到合适的节点上。 10. **服务发现和负载均衡**:...

    kubernetes-server-linux-amd64.tar.gz

    2. **etcd**:一个分布式的键值存储系统,用于保存Kubernetes集群的状态信息。 3. **kube-scheduler**:负责决定哪个节点应该运行新的Pod(Kubernetes的基本调度单元)。 4. **kube-controller-manager**:包含多...

    kubernetes之pod2daemon-3.tar.gz下载

    kubernetes之pod2daemon-3.tar.gz下载

    kubernetes-node-linux-amd64.tar.gz-v1.14.11,二进制下载

    总之,"kubernetes-node-linux-amd64.tar.gz-v1.14.11"提供了一个完整的Kubernetes节点软件包,使用户能够轻松地将Linux服务器集成到现有的或新的Kubernetes集群中,以扩展集群的计算资源并支持应用程序的运行。理解...

    kubernetes-server-linux-amd64.tar (1).gz

    它是一个用于自动化容器化应用程序部署、扩展和管理的开源平台。Kubernetes的核心理念是通过定义名为Pod的单元来组织和管理容器,提供服务发现、负载均衡、自动伸缩以及存储卷挂载等功能,确保应用的高可用性和可...

    kubernetes-client-windows-amd64 (v1.10.11).tar.gz

    kubernetes-client-windows-amd64 v1.10.11 是一个稳定且成熟的版本,主要特点包括: - 支持API资源的版本管理和升级,确保与不同版本的Kubernetes集群兼容。 - 提供了丰富的命令行选项,使用户能够灵活定制操作...

    kubernetes-client-darwin-amd64.tar.gz-v1.14.1二进制下载

    在解压`kubernetes-client-darwin-amd64.tar.gz`后,你将得到一个名为`kubectl`的可执行文件,通常将其放置在PATH环境变量包含的目录下,如`/usr/local/bin`,以便在任何路径下都能通过命令行调用。安装完成后,你...

    kubernetes-server-linux-amd64-v1.15.5.tar.gz

    4. **自动伸缩**:Kubernetes的水平Pod自动伸缩(HPA)和垂直Pod自动伸缩(VPA)功能在这个版本中可能更加成熟,能够根据应用负载自动调整Pod的数量和资源分配。 5. **资源效率**:优化了调度器和控制器的性能,...

    kubernetes-v1.16.2-server-linux-amd64.tar.gz

    《Kubernetes v1.16.2...通过理解每个组件的功能和配置细节,我们可以更好地利用这个强大的容器编排系统,构建高效、安全且高度可伸缩的微服务环境。无论是用于生产环境还是实验学习,k8s v1.16.2都是值得信赖的选择。

Global site tag (gtag.js) - Google Analytics