kubernetes - 如何对 kubeadm 上的 metrics-server 进行故障排除?
问题描述
我有一个在裸机上使用 kubeadm 的工作 1.15.1 kubenetes 集群,并且像文档中那样部署了 metrics-server:
git clone https://github.com/kubernetes-incubator/metrics-server.git
kubectl create -f metrics-server/deploy/1.8+/
一段时间后,我尝试kubectl top node
并得到回应:
错误:指标尚不可用
另外,当我尝试时,kubectl top pods
我得到:
W0721 20:01:31.786615 21232 top_pod.go:266] 指标不可用于 pod default/pod-deployment-57b99df6b4-khh84,年龄:27h31m59.78660593s 错误:指标不可用于 pod default/pod-deployment-57b99df6b4-khh84,年龄:27h31m59.78660593s
我检查了度量服务器的 pod 和服务,它们都运行良好。我应该在哪里尝试查看问题?
解决方案
编辑度量服务器部署,如 Subramanian Manickam 的回答所说,您也可以使用
$ kubectl edit deploy -n kube-system metrics-server
这将打开一个带有部署 yaml 文件的文本编辑器,您可以在其中进行以下更改:
在spec.template.spec.containersname: metrics-server
下,与add处于同一级别
args:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --metric-resolution=30s
然后在与我相同级别的spec.template.speccontainers
下,我还必须添加:
hostNetwork: true
修复与 CNI 一起工作的度量服务器(在我的例子中是印花布)。
之后您的部署 yaml 应如下所示:
[...]
spec:
[...]
template:
metadata:
creationTimestamp: null
labels:
k8s-app: metrics-server
name: metrics-server
spec:
containers:
- args:
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-insecure-tls
- --metric-resolution=30s
image: k8s.gcr.io/metrics-server-amd64:v0.3.3
imagePullPolicy: Always
name: metrics-server
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /tmp
name: tmp-dir
dnsPolicy: ClusterFirst
hostNetwork: true
[...]
之后大约需要 10-15 秒kubectl top pods
才能返回一些数据。
推荐阅读
- c# - nHibernate:使用原始查询创建数据库
- php - 如何在插入数据库之前验证数据是否满足特定条件
- javascript - 如何将 0 添加到我的分钟和秒?
- amazon-web-services - 无法从我的 ubuntu EC2 机器连接到 AWS DocumentDB
- javascript - 不懂用函数和参数解析查询字符串
- google-cloud-platform - GCP Dataproc 可以从本地数据库获取数据(或在其上运行其他作业)吗?
- javascript - 为什么相互重叠的 SVG 线条/路径会产生不同的笔触?
- amazon-web-services - CORS 配置问题:在同一个存储桶中,一个文件夹抛出 Access-Control-Allow-Origin 错误,另一个没有
- php - Laravel 5.5 - 如何抑制 MySQL 数据库截断警告消息
- sql - Oracle SQL/PLSQL:基于货币的分层查询拆分和求和值