微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kubernetes学习笔记八:Metrics Server和HPA

部署APIService
apiVersion: apiregistration.k8s.io/v1
kind: APIService
Metadata:
  name: v1beta1.metrics.k8s.io
spec:
  service:
    name: metrics-server
    namespace: kube-system
  group: metrics.k8s.io
  version: v1beta1
  insecureSkipTLsverify: true
  groupPriorityMinimum: 100
  versionPriority: 100

kubectl get apiservices.apiregistration.k8s.io | grep kube-system

在这里插入图片描述

部署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-server
  image: scofield/metrics-server:v0.3.7
  imagePullPolicy: IfNotPresent
  args:
    - --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+镜像后日志打印正常。

在这里插入图片描述

HPA

定义Deployment和Service。定义resources.requests.cpu是关键。

apiVersion: v1
kind: Service
Metadata:
  name: myngx
spec:
  ports:
  - name: myngx
    port: 3080
    targetPort: 80
  selector:
    app: myngx
---
apiVersion: apps/v1
kind: Deployment
Metadata:
  name: myngx
spec:
  replicas: 10
  strategy:
    rollingUpdate:
      maxSurge: 40%
      maxUnavailable: 40%
    type: RollingUpdate
  selector:
    matchLabels:
      app: myngx
  template:
    Metadata:
      labels:
        app: myngx
    spec:
      containers:
      - image: Nginx:1.7.9
        name: myngx
        ports:
        - containerPort: 80
        resources:
          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会自动缩容。

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐