K8s(17)——资源监控与缩放

目录

metrics-server

metrics-server是什么

metrics-server部署

Dashboard部署

HPA

HPA部署----cpu

多项量度指标


本节内容涉及metrics-server,Dashboard以及HPA

metrics-server

metrics-server是什么

Metrics-Server是集群核心监控数据的聚合器。通俗地说,它存储了集群中各节点的监控数据,并且提供了API以供分析和使用。Metrics-Server作为一个 Deployment对象默认部署在Kubernetes集群中。不过准确地说,它是Deployment,Service,ClusterRole,ClusterRoleBinding,APIService,RoleBinding等资源对象的综合体。

Metrics Server 并不是 kube-apiserver 的一部分,而是通过 Aggregator 这种插件机制,在独立部署的情况下同 kube-apiserver 一起统一对外服务的。kube-aggregator 其实就是一个根据 URL 选择具体的 API 后端的代理服务器。
 

metrics-server部署

下载yaml文件

[root@k8s2 metrics]# wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

修改部署文件

端口号改为4443,把镜像路径改为自己仓库

 上传镜像到harbor

应用components.yaml文件,可以看到running了,但是没有就绪

 [root@k8s2 metrics]# kubectl apply -f components.yaml

如有问题,可以查看日志,如证书签发和内网的DNS服务器等设置问题

[root@k8s2 metrics]# kubectl -n kube-system logs metrics-server-5f5599576c-lbqgm

监控所有节点的cpu和mem资源

Dashboard部署

Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。

官网:GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters

下载部署文件,镜像位置一改

[root@k8s2 dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

仓库创建新项目kubernetesui,方便管理镜像,上传所需镜像到harbor

部署应用

[root@k8s2 dashboard]# kubectl apply -f recommended.yaml

修改svc,开放服务的端口,用LoadBalancer方式,以便外部访问

[root@k8s2 dashboard]# kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard

集群需要部署metallb-system,如果没有可以使用NodePort方式

访问:https://192.168.56.101

需要token,先授权

因为kubernetes-dashboard这个全局角色中写的权限只有读,不可以写,所以我们加入权限

[root@k8s2 dashboard]# vim rbac.yaml

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

name: admin-user

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: cluster-admin #权限使用的是以前创建的cluster-admin,在里面有读写权限

subjects:

- kind: ServiceAccount

name: kubernetes-dashboard  #作用对象是kubernetes-dashboard

namespace: kubernetes-dashboard

[root@k8s2 dashboard]# kubectl apply -f rbac.yaml

获取token

[root@k8s2 dashboard]# kubectl -n kubernetes-dashboard create token kubernetes-dashboard

 使用token登录网页

查看cpu内存 

pod查看工作

 交互式创建pod

 拉伸pod

 版本迭代

HPA

应用的资源使用率通常都有高峰和低谷的时候,如何削峰填谷,提高集群的整体资源利用率,让service中的Pod个数根据利用情况自动调整呢?这就有赖于HPA(Horizontal Pod Autoscaling)即使Pod水平自动缩放。

Horizontal Pod Autoscaling仅适用于Deployment控制器和ReplicaSet控制器,在V1版本中仅支持根据Pod的CPU利用率扩容与缩容,在v2版本中,支持根据内存和cpu利用率扩容与缩容。HPA需要与metrics配合使用,metrics负责监控cpu和mem数据,然后提供给HPA,HPA根据使用情况自动扩容与缩容。metrics默认只能用cpu和mem两个指标(系统负载),其他监控指标(访问量等等)需要第三方给数据,比如普罗米修斯。

HPA部署----cpu

官网:HorizontalPodAutoscaler 演练 | Kubernetes

准备镜像上传到仓库

编辑hpa.yaml 文件

[root@k8s2 hpa]# vim hpa.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: php-apache

spec:

selector:

matchLabels:

run: php-apache

replicas: 1

template:

metadata:

labels:

run: php-apache

spec:

containers:

- name: php-apache

image: hpa-example

ports:

- containerPort: 80

resources:

limits:

cpu: 500m

requests:

cpu: 200m

---

apiVersion: v1

kind: Service

metadata:

name: php-apache

labels:

run: php-apache

spec:

ports:

- port: 80

selector:

run: php-apache

应用

[root@k8s2 hpa]# kubectl apply -f hpa.yaml

设定HPA控制器,名字叫php-apache,cpu目标使用率是百分之五十,副本最小个数为1,最大个数为10

[root@k8s2 hpa]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

查看pod的cpu使用情况

[root@k8s2 hpa]# kubectl get hpa

NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE

php-apache Deployment/php-apache 0%/50% 1 10 1 73s

压测实验:每0.01秒访问一次php-apache服务,模拟增加php-apache服务的负荷

[root@k8s2 hpa]# kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

pod负载上升

[root@k8s2 ~]# kubectl top pod

NAME CPU(cores) MEMORY(bytes)

load-generator 24m 3Mi

php-apache-6496844877-d7gfz 409m 14Mi

触发hpa扩容pod

多项量度指标

想要同时监测cpu和mem,v1版本的hpa不能满足,需要使用v2版本,下面不再使用命令的方式,使用yaml文件的格式生成hpa

[root@k8s2 hpa]# kubectl get hpa php-apache -o yaml > hpa-v2.yaml

修改文件,增加内存指标

- type: Resource

resource:

name: memory

target:

av/erageValue: 5eMi  #mem目标使用大小是50M

type: AverageValue

删除之前的v1版本,应用hpa-v2.yaml 文件产生v2版本的hpa

[root@k8s2 hpa]# kubectl apply -f hpa-v2.yaml

查看

[root@k8s2 hpa]# kubectl get hpa

NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE

php-apache Deployment/php-apache 15835136/50Mi, 0%/50% 1 10 1 20m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值