Kubernetes 在 Debian 上的日志管理实操指南
一 日志类型与总体架构
二 本地查看与常用命令
kubectl logs <pod>kubectl logs <pod> -c <container>kubectl logs <pod> -fkubectl logs <pod> --since=5m、--since-time=2023-11-22T10:00:00Zkubectl logs <pod> --tail=10kubectl logs <pod> -n <ns>kubectl logs -l app=myapp -c web--previous(上一个实例)、--timestamps、--limit-bytessudo journalctl -u kubelet -fsudo journalctl -u kubelet | grep -i apiserversudo tail -f /var/log/kubernetes/audit.log(需事先配置审计策略并挂载日志目录)。三 集中式日志方案 EFK 部署步骤
kubectl create ns kube-loggingapiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch
namespace: kube-logging
spec:
replicas: 1
selector:
matchLabels:
app: elasticsearch
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0
ports:
- containerPort: 9200
- containerPort: 9300
env:
- name: discovery.type
value: single-node
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
namespace: kube-logging
spec:
selector:
app: elasticsearch
ports:
- port: 9200
targetPort: 9200
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
namespace: kube-logging
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.12.0-debian-elasticsearch
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch.kube-logging.svc.cluster.local"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
namespace: kube-logging
spec:
replicas: 1
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
containers:
- name: kibana
image: docker.elastic.co/kibana/kibana:7.15.0
ports:
- containerPort: 5601
---
apiVersion: v1
kind: Service
metadata:
name: kibana
namespace: kube-logging
spec:
type: NodePort
selector:
app: kibana
ports:
- port: 5601
targetPort: 5601
nodePort: 30601
四 轻量替代方案 Grafana Loki
五 日志轮转与运维最佳实践