基础配置
主机名 IP 系统版本
k8s-master
172.21.3.20
CentOS7.8
k8s-node1
172.21.3.21
CentOS7.8
k8s-node2
172.21.3.22
CentOS7.8
下载metric-server部署的yaml文件到本地
拉取metric-server的镜像到本地
0.3.7: Pulling from zhaoqinchang/metrics-server
9ff2acc3204b: Pull complete
9d14b55ff9a0: Pull complete
Digest: sha256:c0efe772bb9e5c289db6cc4bc2002c268507d0226f2a3815f7213e00261c38e9
Status: Downloaded newer image for zhaoqinchang/metrics-server:0.3.7
docker.io/zhaoqinchang/metrics-server:0.3.7
修改components.yaml文件为如下内容
cat components.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: system:aggregated-metrics-reader
labels:
rbac.authorization.k8s.io/aggregate-to-view: "true"
rbac.authorization.k8s.io/aggregate-to-edit: "true"
rbac.authorization.k8s.io/aggregate-to-admin: "true"
rules:
- apiGroups: ["metrics.k8s.io" ]
resources: ["pods" , "nodes" ]
verbs: ["get" , "list" , "watch" ]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: metrics-server:system:auth-delegator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: metrics-server-auth-reader
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
---
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
---
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:
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
image: zhaoqinchang/metrics-server:0.3.7
imagePullPolicy: IfNotPresent
args:
- --cert-dir=/tmp
- --secure-port=4443
command :
- /metrics-server
- --kubelet-preferred-address-types=InternalIP
- --kubelet-insecure-tls
ports:
- name: main-port
containerPort: 4443
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
volumeMounts:
- name: tmp-dir
mountPath: /tmp
nodeSelector:
kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: metrics-server
namespace: kube-system
labels:
kubernetes.io/name: "Metrics-server"
kubernetes.io/cluster-service: "true"
spec:
selector:
k8s-app: metrics-server
ports:
- port: 443
protocol: TCP
targetPort: main-port
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: system:metrics-server
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- nodes/stats
- namespaces
- configmaps
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: system:metrics-server
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:metrics-server
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
部署metric-server
kubectl apply -f components.yaml
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
查看metric-server部署节点
kubectl get pods -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-66bff467f8-h7rjz 1/1 Running 21 72d 10.244.0.142 master
coredns-66bff467f8-jvqf8 1/1 Running 21 72d 10.244.0.144 master
etcd-master 1/1 Running 23 72d 172.16.2.200 master
kube-apiserver-master 1/1 Running 97 72d 172.16.2.200 master
kube-controller-manager-master 1/1 Running 23 72d 172.16.2.200 master
kube-flannel-ds-amd64-26qv9 1/1 Running 28 72d 172.16.2.200 master
kube-flannel-ds-amd64-fzxxc 1/1 Running 16 72d 172.16.2.101 node1
kube-flannel-ds-amd64-lgggd 1/1 Running 3 3d5h 172.16.2.202 node2
kube-proxy-255z5 1/1 Running 23 72d 172.16.2.200 master
kube-proxy-8mh7c 1/1 Running 17 72d 172.16.2.101 node1
kube-proxy-gsbn6 1/1 Running 16 72d 172.16.2.202 node2
kube-scheduler-master 1/1 Running 23 72d 172.16.2.200 master
metrics-server-7b8dbfc8bc-l8sxd 1/1 Running 0 16s 10.244.1.163 node1
查看metric-server资源对象的详细信息
Name: metrics-server-7b8dbfc8bc-4ck84
Namespace: kube-system
Priority: 0
Node: node1/172.16.2.101
Start Time: Sun, 27 Sep 2020 15:25:03 +0800
Labels: k8s-app=metrics-server
pod-template-hash=7b8dbfc8bc
Annotations:
Status: Running
IP: 10.244.1.165
IPs:
IP: 10.244.1.165
Controlled By: ReplicaSet/metrics-server-7b8dbfc8bc
Containers:
metrics-server:
Container ID: docker://7db90ed46c704a75fbf42c0e7ad7996a0968ab26e1b04ec56367324865fb3abd
Image: zhaoqinchang/metrics-server:0.3.7
Image ID: docker-pullable://zhaoqinchang/metrics-server@sha256:c0efe772bb9e5c289db6cc4bc2002c268507d0226f2a3815f7213e00261c38e9
Port: 4443/TCP
Host Port: 0/TCP
Args:
--cert-dir=/tmp
--secure-port=4443
State: Running
Started: Sun, 27 Sep 2020 15:25:04 +0800
Ready: True
Restart Count: 0
Environment:
Mounts:
/tmp from tmp-dir (rw)
/var/run/secrets/kubernetes.io/serviceaccount from metrics-server-token-vszdg (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
tmp-dir:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit:
metrics-server-token-vszdg:
Type: Secret (a volume populated by a Secret)
SecretName: metrics-server-token-vszdg
Optional: false
QoS Class: BestEffort
Node-Selectors: kubernetes.io/os=linux
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 31s default-scheduler Successfully assigned kube-system/metrics-server-7b8dbfc8bc-4ck84 to node1
Normal Pulled kubelet, node1 Container image "zhaoqinchang/metrics-server:0.3.7" already present on machine
Normal Created kubelet, node1 Created container metrics-server
Normal Started kubelet, node1 Started container metrics-server
查看metric.k8s.io是否出现在Kubernetes集群的API群组列表中
metrics.k8s.io/v1beta1
使用kubectl top命令
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 179m 8% 1660Mi 43%
node1 81m 4% 908Mi 23%
node2 78m 3% 1036Mi 26%
查看容器使用情况
[root@k8s-master kubernetes]
NAME CPU(cores) MEMORY(bytes)
nginxdocker-59845fd65f-kgnmc 0m 3Mi
nginxdocker-59845fd65f-rnvzg 0m 3Mi
nginxdocker-59845fd65f-zgrlc 0m 4Mi
tomcat7-54fb6dbfdc-ch42r 2m 123Mi
tomcat7-54fb6dbfdc-cmljd 2m 123Mi
tomcat7-54fb6dbfdc-ln4hk 2m 125Mi
Dashboard可视化插件就可以看到容器运行所占资源图形数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 一天 Star 破万的开源项目「GitHub 热点速览」
· 瞧瞧别人家的日期处理,那叫一个优雅!
· 使用TypeScript开发微信小程序(云开发)-入门篇
· 没几个人需要了解的JDK知识,我却花了3天时间研究
· 定时任务稳定性解决方案-healthchecks监控系统