AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1153770
Accepted
kaushal47
kaushal47
Asked: 2024-02-17 18:50:48 +0800 CST2024-02-17 18:50:48 +0800 CST 2024-02-17 18:50:48 +0800 CST

在 kubernetes 集群中安装了指标服务器,但“kubectl 顶级节点”出现“ServiceUnavailable”错误

  • 772

我有一个 3 主 kubernetes 集群,kubernetes 版本为 v1.25.0

NAME              STATUS   ROLES           AGE    VERSION
master21.server   Ready    control-plane   77d    v1.25.0
master22.server   Ready    control-plane   22h    v1.25.0
master23.server   Ready    control-plane   265d   v1.25.0
worker31.server   Ready    worker          265d   v1.25.0
worker32.server   Ready    worker          265d   v1.25.0

我已经使用以下步骤安装了指标集群

从https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml下载了components.yaml

进行了以下更改

- --kubelet-insecure-tls=true
- --kubelet-preferred-address-types=InternalIP

然后应用 yaml 使用;

kubectl apply -f components.yaml

我可以看到 Pod 部署成功,没有任何重启或错误,但是当我执行kubectl 顶级节点时出现以下错误

Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)

尝试了谷歌中与此错误相关的大部分可用内容,没有任何帮助,有人可以阐明这一点吗?

更新

一段时间后,我检查了指标 Pod 日志,并可以从所有其他节点看到以下错误(192.168.1.22 是主服务器之一)

 failed to verify certificate: x509: cannot validate certificate for 192.168.1.22 because it doesn't contain any IP SANs"  

经过一番搜索后,我使用以下 和 修改了指标组件 yaml,再次部署

 - --kubelet-preferred-address-types=Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP

现在我遇到了以下错误,对我来说,用于忽略 TLS 验证的 argumemt("- --kubelet-insecure-tls") 似乎无法正常工作("- --kubelet-insecure-tls=true" 或"- --kubelet-insecure-tls") ,如果有人遇到同样的问题并解决了,感谢您的意见。

0218 08:16:22.070470       1 scraper.go:147] "Failed to scrape node, timeout to access kubelet" err="Get \"https://master23.server:10250/metrics/resource\": context deadline exceeded" node="master23.server" timeout="10s"
kubernetes
  • 1 1 个回答
  • 61 Views

1 个回答

  • Voted
  1. Best Answer
    kaushal47
    2024-02-24T15:39:14+08:002024-02-24T15:39:14+08:00

    我通过执行以下操作解决了这个问题;

    1. 使用删除所有当前度量服务器组件
    kubectl delete -f  components.yaml
    

    下载了component.yaml

    wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
    
    1. 添加了“--kubelet-insecure-tls”,并在-args部分中修改了“---kubelet-preferred-address-types=”,如下所示,将指标分辨率更改为30s,

    2. 将 --secure-port,containerPort 更改为自定义端口 4443(从 10250 更改为 4433 ,因为 10250 已被 kubernetes api 使用),然后在所有工作节点和主节点的防火墙中允许使用 4443 端口

          - args:
            - --kubelet-insecure-tls=true
            - --cert-dir=/tmp
            - --secure-port=4443
            - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
            - --kubelet-use-node-status-port
            - --metric-resolution=30s
     
    containerPort:4443
    

    4)在相关位置添加了hostNetwork: true,如下所示。

      hostNetwork: true
      nodeSelector:
        kubernetes.io/os: linux
    
    1. 应用了component.yaml
    kubectl apply -f components.yaml
    
    1. 检查api服务状态
    kubectl get apiservice v1beta1.metrics.k8s.io
    
    • 0

相关问题

  • Nvidia Config 后 Containerd 无法启动

  • 在使用 kubeadm 引导集群之前,如何修改 CoreDNS 配置映射?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve