温馨提示×

k8s在centos上如何监控集群状态

小樊
64
2025-04-04 22:07:32
栏目: 智能运维

在CentOS上监控Kubernetes(k8s)集群状态,可以使用多种工具和方法。以下是一些常用的方法和工具:

使用 kubectl 命令行工具

kubectl 是 Kubernetes 的默认命令行工具,可以用来查看集群的状态。

  • 查看集群信息

    kubectl cluster-info
    
  • 获取所有节点

    kubectl get nodes
    
  • 检查 K8s 组件状态

    kubectl get componentstatuses
    

使用 Metrics Server

Metrics Server 是一个聚合器,用于收集 Kubernetes 集群中资源使用情况的数据,如 Pod 和节点的 CPU 和内存使用情况。

  • 安装 Metrics Server

    1. 创建角色和权限:

      kubectl create clusterrolebinding kube-proxy-cluster-admin --clusterrole cluster-admin --user system:kube-proxy
      
    2. 准备 metrics-server.yaml 文件:

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        labels:
          k8s-app: metrics-server
        name: metrics-server
        namespace: kube-system
      
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        labels:
          k8s-app: metrics-server
        name: system: aggregated-metrics-reader
      rules:
      - apiGroups:
        - metrics.k8s.io
        resources:
          - pods
          - nodes
        verbs:
          - get
          - list
          - watch
      
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        labels:
          k8s-app: metrics-server
        name: system: metrics-server
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: system: metrics-server
      
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          k8s-app: metrics-server
        name: metrics-server
        namespace: kube-system
      spec:
        ports:
        - name: https
          port: 443
          protocol: TCP
          targetPort: https
        selector:
          k8s-app: metrics-server
      
    3. 应用配置:

      kubectl apply -f metrics-server.yaml
      

使用 Prometheus 和 Grafana

Prometheus 是一个开源的监控系统和时间序列数据库,而 Grafana 是一个开源的分析和监测平台。结合使用它们可以提供强大的监控和可视化功能。

  • 部署 Prometheus Operator

    kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
    
  • 配置 Prometheus

    创建 prometheus.yaml 文件:

    apiVersion: monitoring.coreos.com/v1
    kind: Prometheus
    metadata:
      name: my-prometheus
    spec:
      replicas: 2
      serviceAccountName: prometheus-k8s
      serviceMonitorSelector: {}
      resources:
        requests:
          memory: "400Mi"
      ruleSelector:
        matchLabels:
          prometheus: k8s
      alerting:
        alertmanagers:
        - namespace: monitoring
          name: alertmanager-main
          port: web
        storage:
          storageClassName: default
          volumeClaimTemplate:
            spec:
              resources:
                requests:
                  storage: "10Gi"
    

    应用配置:

    kubectl apply -f prometheus.yaml
    
  • 部署 Grafana

    kubectl apply -f https://raw.githubusercontent.com/coreos/kube-prometheus/master/manifests/grafana/grafana.yaml
    
  • 配置 Grafana 连接 Prometheus

    在 Grafana 界面中添加 Prometheus 数据源,填入 Prometheus 的服务地址。

使用 kube-state-metrics

kube-state-metrics 收集 Kubernetes 集群内资源对象的数据,如 Deployment、StatefulSet 和 DaemonSet 的状态。

  • 安装 kube-state-metrics

    1. 创建角色和权限:

      kubectl create clusterrolebinding kube-state-metrics-cluster-admin --clusterrole cluster-admin --user system:kube-proxy
      
    2. 准备 kube-state-metrics.yaml 文件:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          k8s-app: kube-state-metrics
        name: kube-state-metrics
        namespace: kube-system
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: kube-state-metrics
        template:
          metadata:
            labels:
              app: kube-state-metrics
          spec:
            containers:
            - name: kube-state-metrics
              image: k8s.gcr.io/kube-state-metrics:1.10.1
              ports:
              - name: http
                port: 8080
                targetPort: 8080
              resources:
                requests:
                  memory: "256Mi"
                  cpu: "250m"
                limits:
                  memory: "512Mi"
                  cpu: "500m"
      
    3. 应用配置:

      kubectl apply -f kube-state-metrics.yaml
      

通过这些工具和方法,你可以在 CentOS 上有效地监控 Kubernetes 集群的状态和性能。根据具体需求选择合适的工具,可以更好地满足你的监控需求。

0