云计算

Kubernetes 动态伸缩

2018-07-26  本文已影响0人  梅_梅

1. 概述

1.1 Metrics-server

从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取, metrics-server 替代了heapster。

Metrics 主要实现了以下功能:

image.png

通过在主 API server 中注册的 Metrics Server Kubernetes 聚合器 来采集指标信息。

1.2 动态伸缩

kubernets 的动态伸缩是指以负载和资源开销为参考进行服务副本的自动增加和缩减以降低负荷。

kubernetes的动态伸缩有两个维度:

如下图

kubetnetes的动态伸缩触发数据来源是指标聚合器(Metricsaggregator),其数据来源是metrics-server从cadvisorKubelete处收集到的数据,或者是从普罗米休斯处收集来的数据。其将两者的数据聚合起来对kubernetes的动态伸缩(Hpa)功能提供数据源支持。

动态伸缩根据聚合器的数据进行触发,通过改变Deployment实例来增减pod实例,降低负荷。

image.png

2 部署

下面详细说明hpa的部署实例,数据源采用metrics-server

2.1 Kubernetes配置

  1. 为/etc/kubernetes/controller-manager增加启动项:

--horizontal-pod-autoscaler-use-rest-clients=true

systemctl restart kube-controller-manager

  1. 为/usr/lib/systemd/system/kube-apiserver.service增加启动项(也可以修改/etc/kubernetes/apiserver文件增加):

--requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem \
--requestheader-allowed-names=  \
--requestheader-extra-headers-prefix=X-Remote-Extra- \
--requestheader-group-headers=X-Remote-Group \
--requestheader-username-headers=X-Remote-User \
--proxy-client-cert-file=/etc/kubernetes/ssl/kubelet-client.crt \
--proxy-client-key-file=/etc/kubernetes/ssl/kubelet-client.key \
--enable-aggregator-routing=true

systemctl daemon-reload
systemctl restart kube-apiserver

2.1 安装metrics-server

  1. 创建:

kubectl create -f metrics-server.yml


  1. 测试

创建测试程序


kubectl create -f podinfo-dep.yaml

kubectl create -f podinfo-hpa.yaml

kubectl create -f podinfo-svc.yaml

kubectl create -f podinfo-ingress.yaml


3. 源码

相关的源代码在xiyanxiyan10

上一篇下一篇

猜你喜欢

热点阅读