监控CentOS上的Kubernetes(k8s)集群可以通过多种工具和方法实现,以下是一些常用的监控工具和步骤:
kubeadm是Kubernetes官方提供的工具,可以用来初始化和管理Kubernetes集群。虽然kubeadm本身不直接提供监控功能,但可以结合其他工具来实现监控。
kubectl
是Kubernetes的官方命令行工具,可以用来与集群进行通信和管理资源。通过kubectl
,你可以查看集群的状态、节点信息、Pod状态等。
kubectl get nodes
kubectl get pods --all-namespaces
Prometheus是一个开源的监控和告警工具,而Grafana是一个开源的分析和监测平台。通过导出Kubernetes的监控指标,可以将这些指标集成到Prometheus中,并使用Grafana进行可视化展示。
kubectl apply -f https://github.com/prometheus-community/helm-charts/releases/latest/download/prometheus-chart.tgz
helm install prometheus stable/prometheus --set global.storage.size=10Gi
kubectl apply -f https://raw.githubusercontent.com/grafana/grafana/master/deploy/recommended/grafana.yaml
编辑Prometheus的配置文件(通常位于/prometheus/prometheus.yml
),添加以下配置来抓取Kubernetes的指标:
scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__meta_kubernetes_node_label_app]
action: keep
regex: kube-state-metrics
- source_labels: [__meta_kubernetes_node_label_app]
action: replace
target_label: __address__
replacement: :9090
- source_labels: [__meta_kubernetes_node_annotation_prometheus_io_scrape]
action: keep
regex: "true"
- source_labels: [__meta_kubernetes_node_annotation_prometheus_io_port]
action: replace
target_label: __address__
replacement: :9090
kubectl rollout restart deployment prometheus
Kubernetes Dashboard是一个内置的Web界面,可以用来查看和管理Kubernetes集群。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
配置好防火墙和Service后,可以通过以下URL访问Kubernetes Dashboard:
https://<your-master-node-ip>:30000
ELK Stack是一个流行的日志管理和分析解决方案。通过收集和分析Kubernetes集群的日志,可以更好地监控和调试集群。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install logstash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install kibana
编辑/etc/elasticsearch/elasticsearch.yml
文件,配置集群名称和节点名称。
创建一个Logstash配置文件(例如/etc/logstash/conf.d/k8s.conf
),并配置日志收集。
input {
kubernetes {
host => "kubernetes.default.svc"
port => 10250
use_ssl => false
ssl_no_validate => true
ssl_version => "TLSv1.2"
log_format => "json"
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "k8s-%{+YYYY.MM.dd}"
}
}
sudo systemctl restart logstash
sudo systemctl restart elasticsearch
编辑/etc/kibana/kibana.yml
文件,配置Elasticsearch的URL。
elasticsearch.hosts: ["http://elasticsearch:9200"]
sudo systemctl restart kibana
通过以上步骤,你可以实现对CentOS上Kubernetes集群的监控。根据具体需求选择合适的工具和方法,可以有效地监控和管理集群的状态和性能。