curl指令查询K8s metrics

Forbidden (user=system:node, verb=get, resource=nodes, subresource=metrics)

原因分析

当前用户(kubectl指令使用的证书代表的用户,即 system:node)没有足够的权限去获取 /metrics 端点的数据, Kubernetes 集群的权限设置(Role-Based Access Control, RBAC)阻止了这种访问。
查看现有ClusterRole的权限:kubectl describe clusterrole system:node

解决措施

新建ClusterRole和ClusterRoleBinding,添加访问 /metrics 的权限

cat  <<EOF  > node-metrics-access.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: node-metrics-access
rules:
- apiGroups: [""]
  resources: ["nodes/metrics"]
  verbs: ["get", "list", "watch"]
EOF

cat  <<EOF  > node-metrics-access-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: node-metrics-access-binding
subjects:
- kind: Group
  name: system:nodes
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: node-metrics-access
  apiGroup: rbac.authorization.k8s.io
EOF

kubectl apply -f node-metrics-access.yaml
kubectl apply -f node-metrics-access-binding.yaml
kubectl get clusterrole | grep metrics
kubectl describe clusterrole node-metrics-access

查询指令

sudo curl  -s -k --cert /etc/kubernetes/ssl/kube-node.pem --key /etc/kubernetes/ssl/kube-node-key.pem https://127.0.0.1:10250/metrics | grep kubelet_pleg_relist_interval

相关链接

深入理解 Kubelet 中的 PLEG is not healthy

kubernetes排错-kubelet 报错 PLEG is not healthy

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容