kubectl 常见问题
1. kubectl top 命令报错
该情况一般有以下两种可能
- kube-system下面metrics-server Pod没有正常工作,可以通过
kubectl get pods -n kube-system
进行查看 metrics.k8s.io
API地址被错误重定向,可以执行kubectl get apiservice v1beta1.metrics.k8s.io
查看重定向到的service名称,并确认service当前是否可用及是否对外暴露了v1beta1.metrics.k8s.io
接口。默认重定向地址为kube-system/metrics-server
情况二一般出现在部署prometheus,且prometheus提供的接口不支持v1beta1.metrics.k8s.io时。如果不需要自定义HPA指标,其实不需要此重定向操作。如果属于情况二,可以按照下面步骤操作。
- 确认配置中的的prometheus service可用,并根据需要自定义HPA指标
- 重新部署执行下面yaml文件,回退到普通metrics server,Grafana等不依赖此api。
- 注意,如果您之前已经使用了自定义HPA指标,且处于线上环境,建议您仅确认prometheus service可用即可。回退到普通metrics server可能导致之前的自定义HPA指标失效,请谨慎操作。
apiVersion: apiregistration.k8s.io/v1beta1
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