Kubernetes安装Metrics-Server插件

基础配置

主机名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文件到本地

# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

拉取metric-server的镜像到本地

# docker pull zhaoqinchang/metrics-server:0.3.7
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:
      # 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: zhaoqinchang/metrics-server:0.3.7    #修改镜像为刚刚拉取下来的镜像
        imagePullPolicy: IfNotPresent
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
        command:                 #添加以下三行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资源对象的详细信息

# kubectl describe pods metrics-server-7b8dbfc8bc-4ck84  -n kube-system
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群组列表中

# kubectl api-versions | grep metrics 
metrics.k8s.io/v1beta1

使用kubectl top命令

# kubectl top node
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]# kubectl top  pod
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可视化插件就可以看到容器运行所占资源图形数据

posted @   浒多年以后  阅读(1521)  评论(0)    收藏  举报
编辑推荐:
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
阅读排行:
· 一天 Star 破万的开源项目「GitHub 热点速览」
· 瞧瞧别人家的日期处理,那叫一个优雅!
· 使用TypeScript开发微信小程序(云开发)-入门篇
· 没几个人需要了解的JDK知识,我却花了3天时间研究
· 定时任务稳定性解决方案-healthchecks监控系统
点击右上角即可分享
微信分享提示