在CentOS上监控Kubernetes(k8s)集群状态,可以使用多种工具和方法。以下是一些常用的方法和工具:
kubectl
命令行工具kubectl
是 Kubernetes 的默认命令行工具,可以用来查看集群的状态。
查看集群信息:
kubectl cluster-info
获取所有节点:
kubectl get nodes
检查 K8s 组件状态:
kubectl get componentstatuses
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 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 收集 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 集群的状态和性能。根据具体需求选择合适的工具,可以更好地满足你的监控需求。