kubernetes 中的指标服务不工作

박성일*_*박성일 7 amazon-ec2 kubernetes

我正在 aws 上使用 ec2 机器运行 kubernetes。节点在 Ubuntu 中。

我的指标服务器版本。

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml
Run Code Online (Sandbox Code Playgroud)

组件.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
     k8s-app: metrics-server
  spec:
       serviceAccountName: metrics-server
  volumes:
  # mount in tmp so we can safely use from-scratch images and/or read-only containers
  - name: tmp-dir
    emptyDir: {}
  containers:
  - name: metrics-server
    image: k8s.gcr.io/metrics-server/metrics-server:v0.3.7
    imagePullPolicy: IfNotPresent
    args:
      - --cert-dir=/tmp
      - --secure-port=4443
      - --kubelet-preferred-address-type=InternalIP,ExternalIP,Hostname
      - --kubelet-insecure-tls
Run Code Online (Sandbox Code Playgroud)

即使添加了args之后,仍然会出现错误。错误:来自服务器的错误(ServiceUnavailable):服务器当前无法处理请求(获取nodes.metrics.k8s.io)

或者

错误:指标尚不可用

无论我等待多久,该错误都会出现。

我的 kops 版本:版本 1.18.0 (git-698bf974d8)

我使用网络印花布。

请帮忙...

++ 我尝试 wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml

查看日志..

kubectl 日志 -n kube-system 部署/指标服务器

“无法抓取节点” err =“GET”https://172.20.51.226:10250/stats/summary?only_cpu_and_memory = true“:错误状态代码“401未经授权””node =“ip-172-20-51-226 .ap-northeast-2.compute.internal"

“探测失败”probe=“metric-storage-ready”err=“不提供指标”

Sys*_*d85 13

手动下载 Components.yaml 文件:

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Run Code Online (Sandbox Code Playgroud)

然后编辑Deployment下的args部分:

spec:
  containers:
  - args:
    - --cert-dir=/tmp
    - --secure-port=443
    - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
    - --kubelet-use-node-status-port
    - --metric-resolution=15s
Run Code Online (Sandbox Code Playgroud)

再添加两行:

    - --kubelet-insecure-tls=true
    - --kubelet-preferred-address-types=InternalIP
Run Code Online (Sandbox Code Playgroud)

kubelet的10250端口使用https协议,连接需要通过tls证书验证。添加 ,--kubelet-insecure-tls 告诉它不验证客户端证书。

修改后只需应用清单:

kubectl apply -f components.yaml
Run Code Online (Sandbox Code Playgroud)

稍等一下,您将看到指标服务器 Pod 已启动