Metrics 部署

在新版的 Kubernetes 中,系统资源的采集使用 Metrics-server,可以通过 Metrics 采集节点和 Pod 的内存、磁盘、CPU 和网络的使用率。

将 Master01 节点的 front-proxy-ca.crt 复制到所有 Node 节点

for i in k8s-node01 k8s-node02; \
do scp /etc/kubernetes/pki/front-proxy-ca.crt root@$i:/etc/kubernetes/pki/front-proxy-ca.crt; \
done

在 Master01 节点安装 metrics server

(Optional)如果没有下载 k8s-ha-install,先从 gitee 上克隆它:

git clone https://gitee.com/zhang993632987/k8s-ha-install.git -b manual-installation-v1.27.x

安装 metrics server:

cd /root/k8s-ha-install/metrics-server
comp.yaml存在一点问题,需要先修复才能正常使用

在分支中 manual-installation-v1.27.x 中的文件配置存在一点问题,需要修改后才能正常安装。下面展示了修改相关的片段,并用“#” 将修改的部分标示了出来:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  strategy:
    rollingUpdate:
      maxUnavailable: 0
  template:
    metadata:
      labels:
        k8s-app: metrics-server
    spec:
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
        - --kubelet-insecure-tls
        - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt             # change to front-proxy-ca.crt
        - --requestheader-username-headers=X-Remote-User
        - --requestheader-group-headers=X-Remote-Group
        - --requestheader-extra-headers-prefix=X-Remote-Extra-
        image: registry.cn-beijing.aliyuncs.com/dotbalo/metrics-server:v0.6.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /livez
            port: https
            scheme: HTTPS
          periodSeconds: 10
        name: metrics-server
        ports:
        - containerPort: 4443
          name: https
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readyz
            port: https
            scheme: HTTPS
          initialDelaySeconds: 20
          periodSeconds: 10
        resources:
          requests:
            cpu: 100m
            memory: 200Mi
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        volumeMounts:
        - mountPath: /tmp
          name: tmp-dir
        - mountPath: /etc/kubernetes/pki             # 删除/front-proxy-ca.pem 
          name: pki
      nodeSelector:
        kubernetes.io/os: linux
      priorityClassName: system-cluster-critical
      serviceAccountName: metrics-server
      volumes:
      - emptyDir: {}
        name: tmp-dir
      - hostPath:
          path: /etc/kubernetes/pki                 # 删除/front-proxy-ca.pem 
        name: pki
kubectl create -f comp.yaml

检查安装情况

查看 metrics-server Pod 状态:

kubectl get po -n kube-system -l k8s-app=metrics-server

待 Pod 变成 1/1 Running 后,等待几分钟,即可查看节点和 Pod 资源的使用率:

# kubectl top node
NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master01   263m         13%    1759Mi          22%
k8s-node01     87m          4%     945Mi           12%
k8s-node02     79m          3%     590Mi           7%
# kubectl top po -A
NAMESPACE              NAME                                        CPU(cores)   MEMORY(bytes)   
kube-system            calico-kube-controllers-59fb99f948-5xl52    5m           21Mi
kube-system            calico-node-5g6vw                           33m          122Mi
kube-system            calico-node-dnd5f                           36m          131Mi
kube-system            calico-node-nfvqw                           42m          117Mi
kube-system            calico-typha-7877bbb7fd-8nqp9               3m           34Mi
kube-system            coredns-65dcc469f7-cmpg6                    2m           18Mi
kube-system            coredns-65dcc469f7-cqdlb                    2m           17Mi
kube-system            etcd-k8s-master01                           31m          72Mi
kube-system            kube-apiserver-k8s-master01                 56m          466Mi
kube-system            kube-controller-manager-k8s-master01        25m          63Mi
kube-system            kube-proxy-59xjt                            1m           20Mi
kube-system            kube-proxy-9m89q                            1m           18Mi
kube-system            kube-proxy-z7hwz                            1m           24Mi
kube-system            kube-scheduler-k8s-master01                 4m           21Mi
kube-system            metrics-server-7775d96dc7-cfjjz             3m           22Mi
kubernetes-dashboard   dashboard-metrics-scraper-54b649975-bbt7w   1m           11Mi
kubernetes-dashboard   kubernetes-dashboard-67d8bbc569-z5xxj       1m           14Mi

最后更新于