在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:
-
创建角色和权限:
kubectl create clusterrolebinding kube-proxy-cluster-admin --clusterrole cluster-admin --user system:kube-proxy
-
准备
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
-
应用配置:
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:
-
创建角色和权限:
kubectl create clusterrolebinding kube-state-metrics-cluster-admin --clusterrole cluster-admin --user system:kube-proxy
-
准备
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"
-
应用配置:
kubectl apply -f kube-state-metrics.yaml
-
通过这些工具和方法,你可以在 CentOS 上有效地监控 Kubernetes 集群的状态和性能。根据具体需求选择合适的工具,可以更好地满足你的监控需求。