本文主要是介绍Kubernetes学习笔记八:Metrics Server和HPA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
部署metrics server
metrics-server release github地址
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
kubectl apply -f components.yaml
遇到问题:Failed to pull image “k8s.gcr.io/metrics-server-amd64:v0.3.6”: rpc error: code = Unknown desc = Error response from daemon: Get “https://k8s.gcr.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
无法拉取镜像。
一开始我使用的版本是scofield/metrics-server:v0.3.6,v0.3.6无法拉取镜像,然后改成v0.3.7就可以了。
- name: metrics-serverimage: scofield/metrics-server:v0.3.7imagePullPolicy: IfNotPresentargs:- --cert-dir=/tmp- --secure-port=4443- /metrics-server- --kubelet-insecure-tls- --kubelet-preferred-address-types=InternalIP
kubectl get pods -n kube-system|grep metrics
kubectl top nodes
查看metrics-server的日志,有以下报错:
Failed to make webhook authorizer request: the server could not find the requested resource
参考:k8s-v1.22安装metrics-server
在github/metrics server有提到metrics server支持的k8s版本,我使用的是1.23版本,需要使用0.4以上的版本,而我当前使用的是0.3+的版本。在网上找了一遍,将使用的镜像修改为phperall/metrics-server:v0.4.1
修改yaml文件后执行以下命令:
docker pull phperall/metrics-server:v0.4.1
kubectl apply -f components.yaml
换成0.4+镜像后日志打印正常。
可能还会遇到以下问题:
解决方案:
关于本地k8s部署metrics-server的no such host问题
使用效果:
kubectl top pods -n kube-system --sort-by=‘cpu’
根据cpu的使用对Pod进行排序
kubectl top nodes
查看Node的资源使用情况
HPA
定义Deployment和Service。定义resources.requests.cpu是关键。
apiVersion: v1
kind: Service
metadata:name: myngx
spec:ports:- name: myngxport: 3080targetPort: 80selector:app: myngx
---
apiVersion: apps/v1
kind: Deployment
metadata:name: myngx
spec:replicas: 10strategy:rollingUpdate:maxSurge: 40%maxUnavailable: 40%type: RollingUpdateselector:matchLabels:app: myngxtemplate:metadata:labels:app: myngxspec:containers:- image: nginx:1.7.9name: myngxports:- containerPort: 80resources:requests:cpu: 30m
kubectl autoscale deployment myngx --min=1 --max=40 --cpu-percent=20
kubectl get hpa
yum install httpd-tools -y
安装ab测试软件
watch -n 0.5 kubectl get pods
每隔0.5秒监控pod的变化
ab -c 5000 -n 50000 http://10.99.174.166:3080/
每次并发5000个请求,一共50000个请求。
kubectl top nodes
查看节点的CPU和内存使用情况。
在CPU使用增加时,Pod会自动扩容。CPU使用减少时,Pod会自动缩容。
这篇关于Kubernetes学习笔记八:Metrics Server和HPA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!