Docker(三):利用Kubernetes实现容器的弹性伸缩

  前两章有的介绍docker与Kubernetes。docker是项目运行的容器,Kubernetes则是随着微服务架构的演变docker容器增多而进行其编排的重要工具。Kubernetes不仅可以对容器进行检测状态,还能对其自动扩容缩容。下面就来介绍介绍Kubernetes是如何自动的扩容缩容的。

二、Kubernetes弹性伸缩简介

  手动的扩缩容是通过kubectl scale命令或者修改deployment的replicas数量来控制Pod的扩缩容。当然前一章有说过可以自己开发客户端发送请求到APIServer中。但是这稍微会麻烦点。而Kubernetes自带的功能使得其从两个维度上支持自动的弹性伸缩:

  Cluster AutoScale:处理Kubernetes集群中Node节点伸缩,缺点在于严重依赖Iaas厂商提供的云主机服务和资源监控服务。

  HPA:处理Pod副本集的自动弹性伸缩,使用的是监控服务采集到的资源监控指标数据。

三、HPA简介

  HPA是通过周期性检查Deployment(可以理解为微服务架构中的一个服务。是在Master节点中的对象。下面可以控制多个Pod)控制的目标Pod的相关监控指标的变化情况来确定是否需要针对性地调整目标Pod的副本数。通常应用的扩缩容都是由CPU或内存的使用率实现的。

  HPA可以通过Kubernetes自带的监控系统heapster来获取到CPU的使用率。但是从Kubernetes1.8开始,资源使用指标改为通过metrics api获取,所以需要注意自己的Kubernetes版本。而从1.8开始,Kubernetes也将资源分为了下面两种

  core metrics(核心指标):采集每个节点上kubelet公开的summary api中的指标信息,通常只包含CPU,内存使用率信息

  custom metrics(自定义指标):允许用户从外部的监控系统当中采集自定义的指标,如应用的QPS等指标。

四、直接使用HPA进行自动扩缩容(Kubernetes版本<1.8)

  可直接定义HPA对象

apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: php-apache namespace: default spec: maxReplicas: 10 minReplicas: 4 scaleTargetRef: kind: Deployment name: nginx-demo targetCPUUtilizationPercentage: 90

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzpsj.html