LAB-16:监控Pod度量指标

LAB-16:监控Pod度量指标

LAB 概述

找出具有标签 name=cpu-user 的 Pod,并过滤出使用 CPU 最高的 Pod,然后把它的名字写在已经存在的 /opt/KUTR00401/KUTR00401.txt 文件里(注意他没有说指定 namespace。所以需要使用 -A 指定所以 namespace)

LAB 预配

# 配置 metrics-server
# 1、下载 yaml 文件
user1@k8s-master:~/cka-2022-05-01/16$ wget https://github.com/kubernetes-sigs/metrics-server/releases/download/metrics-server-helm-chart-3.8.2/components.yaml

# 2、修改编码 yaml 文件。增加如下命令
user1@k8s-master:~/cka-2022-05-01/16$ vim components.yaml 
......
kind: Deployment
spec:
    spec:
      containers:
      - args:
        - --kubelet-insecure-tls
        
# 3、修改 api-server  的yaml 文件。# 新版本好像不修改也可以
user1@k8s-master:~$ sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml 
......
spec:
  containers:
  - command
    - --enable-aggregator-routing=true
    
# 4、创建 metrics-server,使用 yaml 文件
user1@k8s-master:~/cka-2022-05-01/16$ kubectl apply -f components.yaml 

# 5、查看 metrics-server 的 deployments
user1@k8s-master:~$ kubectl get deployments.apps -n kube-system metrics-server
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   1/1     1            1           28s

# 6、查看 metrics-server 的 pod
user1@k8s-master:~$ kubectl get pod -n kube-system metrics-server-5f5f46797c-l9vs8 
NAME                              READY   STATUS    RESTARTS   AGE
metrics-server-5f5f46797c-l9vs8   1/1     Running   0          57s

# 7、查看api是否已添加metrics。
user1@k8s-master:~$ kubectl api-versions | grep metrics
metrics.k8s.io/v1beta1

# 8、监控pod的资源信息
user1@k8s-master:~$ kubectl top nodes
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   208m         5%     2218Mi          58%       
k8s-node-1   65m          3%     1727Mi          45%       
k8s-node-2   100m         5%     1857Mi          48%       
k8s-node-3   107m         5%     1808Mi          47%  

# 编写一个 pod 资源清单,标签为 name=cpu-user
user1@k8s-master:~/cka-2022-05-01/16$ cat cpu-pod.yaml 
apiVersion: apps/v1
kind: Deployment 
metadata:
  name: cpu-pod 
spec:
  replicas: 2
  selector:
    matchLabels:
      name: cpu-user
  template:
    metadata:
      labels:
        name: cpu-user
    spec:
      containers:
      - name: nginx 
        image: nginx:1.18.0
        imagePullPolicy: IfNotPresent 

# 创建 pod 资源
user1@k8s-master:~/cka-2022-05-01/16$ kubectl apply -f cpu-pod.yaml 

# 查看标签为 name=cpu-user 的 pod
user1@k8s-master:~$ kubectl get pod -l name=cpu-user -A
NAMESPACE   NAME                       READY   STATUS    RESTARTS      AGE
default     cpu-pod-7bfb667b98-7sjxd   1/1     Running   1 (28h ago)   41h
default     cpu-pod-7bfb667b98-c6ts2   1/1     Running   1 (28h ago)   41h

# 创建目录/opt/KUTR00401
user1@k8s-master:~$ sudo mkdir /opt/KUTR00401

 LAB 答案

# 切换 content
$ kubectl config use-context k8s

# 找 CPU 资源消耗最大的那个 pod,加上--sort-by='cpu'进行排序
$ kubectl top pod -l name=cpu-user -A --sort-by='cpu'
NAMESPACE   NAME                       CPU(cores)   MEMORY(bytes)   
default     cpu-pod-7bfb667b98-7sjxd   0m           3Mi             
default     cpu-pod-7bfb667b98-c6ts2   0m           3Mi  

# 将 CPU 资源消耗最大的那个 pod 名称写入指定文件
$ sudo sh -c 'echo "POD_NAME" >>/opt/KUTR00401/KUTR00401.txt'

 LAB 验证

# 无需验证

参考资料

  • https://v1-22.docs.kubernetes.io/docs/tasks/debug-application-cluster/resource-metrics-pipeline/
posted @ 2022-11-22 13:52  武装小灰灰  阅读(98)  评论(0编辑  收藏  举报