在部署了kubernetes集群后,还需要安装metrics-server或者heapster
插件才能通过 kubectl top node/top
查看到资源使用情况。
不然可能会出现以下报错信息:
$ kubectl top node
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
由于heapster
已经不再维护,下面记录安装metrics-server
过程中遇到的问题。
先下载项目:
git clone git@github.com:kubernetes-sigs/metrics-server.git
解决镜像下载问题
由于metrics-server镜像源默认使用k8s.gcr.io,需要科学上网。如果网络不方便,我已经将镜像复制到我自己的dockhub仓库,所以image 修改为chengtai/metrics-server-amd64:v0.3.6
效果是一样的,我这里使用的版本是v0.3.6。
解决无法解析节点的主机名的问题
无法解析节点的主机名,metrics-server连Node时默认是连接Node节点的主机名,但通过CoreDNS 无法解析各Node的主机名,所以要加--kubelet-preferred-address-types=InternalIP
参数,此外,还需要添加--kubelet-insecure-tls
不验证客户端证书。
下面对上述两点问题进行修改:
cd metrics-server/deploy/kubernetes
vim metrics-server-deployment.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
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-amd64:v0.3.6
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
ports:
- name: main-port
containerPort: 4443
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
imagePullPolicy: IfNotPresent
volumeMounts:
- name: tmp-dir
mountPath: /tmp
nodeSelector:
beta.kubernetes.io/os: linux
kubernetes.io/arch: "amd64"
执行安装
# 文件列表
ls -lht
total 82104
-rw-r--r-- 1 ousei staff 39M 3 9 17:24 metrics-server-amd64.tar.gz
-rw-r--r-- 1 ousei staff 532B 3 9 16:58 resource-reader.yaml
-rw-r--r-- 1 ousei staff 297B 3 9 16:58 metrics-server-service.yaml
-rw-r--r-- 1 ousei staff 1.2K 3 9 16:58 metrics-server-deployment.yaml
-rw-r--r-- 1 ousei staff 298B 3 9 16:58 metrics-apiservice.yaml
-rw-r--r-- 1 ousei staff 324B 3 9 16:58 auth-reader.yaml
-rw-r--r-- 1 ousei staff 303B 3 9 16:58 auth-delegator.yaml
-rw-r--r-- 1 ousei staff 397B 3 9 16:58 aggregated-metrics-reader.yaml
# 安装
kubectl apply -f .
由于安装后有一个生效时间,大概1分钟后这样,再执行就显示正常了。
kubed top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master01 225m 3% 4251Mi 26%
k8s-worker01 1119m 18% 8565Mi 54%
至此结束,如果有帮助到你,就麻烦支持一下,点个赞,谢谢。
网友评论