Kubernetes那点事儿——资源监控、弹性伸缩

资源监控、弹性伸缩


一、资源监控

Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。
Metric server从每个节点上Kubelet API收集指标,通过Kubernetes聚合器注册在Master APIServer
早期版本使用cAdvisor采集数据,现已将cAdvisor集成到kubelet组件里面。当然我们可以使用kubectl top来查看监控信息

在这里插入图片描述

metrics项目地址:
https://github.com/kubernetes-sigs/metrics-server

部署metrics-server

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/metrics-server-helm-chart-3.8.0/components.yaml

修改yaml文件,默认image使用google,image无法拉取,这里我们使用aliyun

133       containers:
134       - args:
135         - --cert-dir=/tmp
136         - --secure-port=4443
137         - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
138         - --kubelet-use-node-status-port
139         - --metric-resolution=15s
140         - --kubelet-insecure-tls
141         #image: k8s.gcr.io/metrics-server/metrics-server:v0.6.0
142         image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.0
143         imagePullPolicy: IfNotPresent

在这里插入图片描述

kubectl apply -f components.yaml

执行后pod一直未处于就绪状态
在这里插入图片描述

查看pod状态信息,发现就绪检查失败。因为证书的原因,修改启动参数不验证https证书即可

在这里插入图片描述  
  

在这里插入图片描述

重新执行yaml文件,pod启动成功
在这里插入图片描述

使用kubectl top 获取采集信息

[root@k8s-master ~]# kubectl  top node k8s-node1
NAME        CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-node1   336m         16%    965Mi           51%       
[root@k8s-master ~]# kubectl  top node k8s-node2
NAME        CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-node2   357m         17%    961Mi           51%       
[root@k8s-master ~]# kubectl  top pod my-busybox
NAME         CPU(cores)   MEMORY(bytes)   
my-busybox   0m           0Mi   

二、Pod水平伸缩

HPA(Horizontal Pod Autoscaler)pod水平伸缩,可以基于cpu使用率、内存使用率自动扩缩 ReplicationController、Deployment和 StatefulSet 中的 Pod 数量,当然也可以基于其他监控程序的指标来执行扩缩容。

kubectl top/hpa -> apiserver -> metrics-server -> kubelet -> pod

要实现水平扩缩容必须满足两个条件:

  1. 集群必须安装metrics监控组件
  2. Pod必须配置resource.request(pod limit)

首先我们创建一个deployment,必须配置request字段

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: "0.5"
            memory: 100Mi
          requests:
            cpu: "0.2"
            memory: 50Mi

配置autoscale,最小1个副本最多4个副本,当cpu-percent超过80进行扩容

在这里插入图片描述

创建svc暴露服务,方便访问nginx

在这里插入图片描述

使用ab工具压测测试,-w观察pod数量、HPA指标

在这里插入图片描述

HPA获取到cpu-percent超过80%,扩容,副本加1

在这里插入图片描述  
  
查看pod状态
在这里插入图片描述

我们再看下pod和endpoint状态

在这里插入图片描述

过一段时间负载下来后会自动进行缩容,时间大约5分钟。这块儿底层逻辑不太清楚,猜测这个时间应该是逻辑中去检测的时间

在这里插入图片描述  
  
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷学技术的梁胖胖yo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值