在CentOS上部署Kubernetes(k8s)的日志管理,通常涉及以下几个步骤:
安装和配置Elasticsearch、Logstash和Kibana(ELK Stack):
部署Fluentd作为DaemonSet:
配置Kubernetes日志收集:
以下是详细的步骤:
# 下载并安装Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz
cd elasticsearch-7.10.0
# 配置Elasticsearch
cp config/elasticsearch.yml.template config/elasticsearch.yml
# 编辑config/elasticsearch.yml,确保以下配置:
# network.host: 0.0.0.0
# discovery.type: single-node
# 启动Elasticsearch
./bin/elasticsearch
# 下载并安装Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-linux-x86_64.tar.gz
tar -xzf logstash-7.10.0-linux-x86_64.tar.gz
cd logstash-7.10.0
# 配置Logstash
cp config/logstash.yml.template config/logstash.yml
# 编辑config/logstash.yml,确保以下配置:
# http.host: "0.0.0.0"
# 启动Logstash
./bin/logstash -f config/logstash.conf
# 下载并安装Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-linux-x86_64.tar.gz
tar -xzf kibana-7.10.0-linux-x86_64.tar.gz
cd kibana-7.10.0
# 配置Kibana
cp config/kibana.yml.template config/kibana.yml
# 编辑config/kibana.yml,确保以下配置:
# server.host: "0.0.0.0"
# 启动Kibana
./bin/kibana
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd
template:
metadata:
labels:
name: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch7-1.0
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch-service.kube-system.svc.cluster.local"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
kubectl apply -f fluentd-daemonset.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
namespace: kube-system
labels:
k8s-app: fluentd-logging
data:
fluent.conf: |
<source>
@type tail
path /var/log/containers/*.log
pos_file /var/log/fluentd-containers.log.pos
tag kubernetes.*
read_from_head true
<parse>
@type json
</parse>
</source>
<match kubernetes.**>
@type elasticsearch
host elasticsearch-service.kube-system.svc.cluster.local
port 9200
logstash_format true
flush_interval 10s
</match>
kubectl apply -f fluentd-configmap.yaml
kubectl get pods -n kube-system -l name=fluentd
访问Kibana界面(通常是http://<your-k8s-master-ip>:5601),查看是否能够看到Kubernetes Pod的日志。
通过以上步骤,你可以在CentOS上部署一个基本的Kubernetes日志管理系统。根据实际需求,你可能需要进一步调整和优化配置。