在Ubuntu上监控Kubernetes(k8s)集群状态,可以通过多种方式实现。以下是一些常用的方法:
kubectl 是Kubernetes的命令行工具,可以用来查询和操作Kubernetes集群。
kubectl get pods --all-namespaces
kubectl get pods -n <namespace>
kubectl get nodes
kubectl get events --all-namespaces
kubectl describe pod <pod-name> -n <namespace>
kubectl describe node <node-name>
Kubernetes Dashboard 是一个基于Web的UI,可以用来监控和管理Kubernetes集群。
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
kubectl proxy
然后在浏览器中访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/Prometheus 是一个开源的监控系统和时间序列数据库,Grafana 是一个开源的分析和监控平台。两者结合可以提供强大的Kubernetes集群监控能力。
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/master/bundle.yaml
kubectl apply -f https://raw.githubusercontent.com/grafana/loki/v3.0.5/clients/manifests/kubernetes/grafana-crd.yaml
kubectl apply -f https://raw.githubusercontent.com/grafana/loki/v3.0.5/clients/manifests/kubernetes/grafana.yaml
prometheus-configmap.yaml:apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: monitoring
data:
prometheus.yml: |
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
action: keep
regex: your-app-name
kubectl apply -f prometheus-configmap.yaml
prometheus-service-monitor.yaml:apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: prometheus
namespace: monitoring
spec:
selector:
matchLabels:
app: prometheus
endpoints:
- port: web
kubectl apply -f prometheus-service-monitor.yaml
http://<your-grafana-service>:3000)。http://prometheus.monitoring.svc:9090),然后点击“Save & Test”。通过以上方法,你可以在Ubuntu上有效地监控Kubernetes集群的状态。