前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >minikube metrics-server HPA 自动扩缩容错误

minikube metrics-server HPA 自动扩缩容错误

作者头像
王清培
发布2021-12-15 09:35:39
9330
发布2021-12-15 09:35:39
举报
文章被收录于专栏:王清培的专栏王清培的专栏

minikube metrics-server pod 错误

启动 minikube addons enable metrics-server 之后查看 metrics-server pod 会有如下错误

代码语言:javascript
复制
Failed to pull image "k8s.gcr.io/metrics-server-amd64:v0.5.2": 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)

这个错误是k8s.gcr.io已经废弃无法访问,需要替换成在国内的镜像,可以使用阿里云的。

代码语言:javascript
复制
registry.cn-hangzhou.aliyuncs.com/google_containers

完整镜像地址。

代码语言:javascript
复制
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.5.2

进入 minikube docker 手动pull镜像。

代码语言:javascript
复制
minikube ssh
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.5.2

为了让metrics-server-deployment能工作需要手动打个tag并且让pod拉取镜像的规则设置成IfNotPresent。

代码语言:javascript
复制
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2 k8s.gcr.io/metrics-server/metrics-server:v0.5.2

如果不做这一步,也可以手动修改deployment image地址,但是这样比较麻烦。 修改镜像拉取规则

代码语言:javascript
复制
 imagePullPolicy: IfNotPresent

手动安装 metrics-server

如果你本地有其他错误,我建议直接关掉minikube metrics-server addons。自行安装metrics-server。

代码语言:javascript
复制
minikube addons disable metrics-server

拉取metrics-server manifast

代码语言:javascript
复制
git://github.com/kubernetes-incubator/metrics-server.git

manifast文件metrics-server/manifests/base/deployment.yaml (注意,手动安装前还需要像第一节介绍的那样,手动拉取镜像、修改imagePullPolicy模式。) 可能会出现类似 heapster 之类错误。

代码语言:javascript
复制
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)

(注意:heapster模式的测量机制在k8s 1.6之后已经不再使用。需要手动打开控制器管理器hpa-rest拉取测量指标。) 但是minikube controller-manager需要在启动的时候设置。

代码语言:javascript
复制
kube-system   kube-controller-manager-minikube   1/1     Running   5          2d13h

启动metrics-server测量。

代码语言:javascript
复制
minikube start --extra-config 'controller-manager.horizontal-pod-autoscaler-use-rest-clients=true'

hpa 错误

创建hpa

代码语言:javascript
复制
k autoscale deployment kubia --cpu-percent=30 --min=1 --max=5

查看hpa状态 k get hpa

代码语言:javascript
复制
kubia   Deployment/kubia   <unknown>/30%          1         5         5          2d12h

查看详情 k describe hpa kubia

代码语言:javascript
复制
the HPA was unable to compute the replica count: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API

其实这里的日志是说已经能正常拉取pod的测量,虽然没有任何返回,但是不影响使用,我们做个测试。 创建一个应用程序。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubia
  labels:
    app: kubia
spec:
  selector:
    matchLabels:
      app: kubia
  replicas: 3
  template:
    metadata:
      labels:
        app: kubia
    spec:
      containers:
      - image: luksa/kubia:v1
        name: kubia
        resources:
          requests:
            cpu: 100m

映射一个请求端口。

代码语言:javascript
复制
k expose deployment kubia --port=80 --target-port=8080

监控HPA watch kubectl get hpa

代码语言:javascript
复制
NAME    REFERENCE          TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
kubia   Deployment/kubia   <unknown>/30%   1         5         3          2m34s

kubia 程序默认是3个副本。 在另外一个pod中循环调用应用程序。

代码语言:javascript
复制
k run -it --rm --restart=Never loadgenerator --image=busybox -- sh -c "while true; do wget -O -q http://kubia.default; done"
代码语言:javascript
复制
NAME    REFERENCE          TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
kubia   Deployment/kubia   51%/30%         1         5         3          3m53s

hpa生效了,我们看下describe。

代码语言:javascript
复制
NAME    REFERENCE          TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
kubia   Deployment/kubia   30%/30%         1         5         5          5m12

图1

HPA-Autoscaler 识别到CPU测量值,已经完成弹性扩容。SuccessfulRescale。

相关版本

代码语言:javascript
复制
minikube version: v1.16.0
代码语言:javascript
复制
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.9"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0"}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • minikube metrics-server pod 错误
  • 手动安装 metrics-server
  • hpa 错误
  • 相关版本
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档