클러스터 내 Syslog를 사용하는 Rancher 로깅 운영자
14111 단어 loggingkubernetesranchersyslog
Fleet(Fleet 또는 기타 GitOps 흐름에 대해 작성함)를 통해 차트를 배포하려는 경우 Rancher 차트 저장소에서 다음 차트를 가져옵니다.
helm repo add rancher-charts https://charts.rancher.io
helm repo update
helm fetch rancher-charts/rancher-logging-crd
helm fetch rancher-charts/rancher-logging
하지만 적용하기 전에 로깅 운영자가 로깅할 수 있도록 클러스터에 syslog 엔드포인트를 설정하려고 합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: rsyslog-deployment
labels:
app: rsyslog
spec:
replicas: 1
selector:
matchLabels:
app: rsyslog
template:
metadata:
labels:
app: rsyslog
spec:
containers:
- name: rsyslog
image: sudheerc1190/rsyslog:latest
ports:
- containerPort: 514
resources:
requests:
cpu: 250m
memory: 524Mi
restartPolicy: Always
terminationGracePeriodSeconds: 30
여기서는 syslog
Deployment
를 생성합니다. 프로덕션의 경우 PersistentVolume
를 생성하고 /var/log/remote
에 마운트하여 이Pod
의 후속 재생성에서 이 클러스터 또는 다른 클러스터에 대한 과거 로깅 데이터를 복원할 수 있도록 하는 것이 좋습니다.이 예제에서는 클러스터 내부에서만 사용할 수 있기를 원하기 때문에 다음
Service
객체를 생성하여 이 엔드포인트에 대한 전체 클러스터 DNS를 생성합니다.---
apiVersion: v1
kind: Service
metadata:
name: "syslog-service-tcp"
spec:
ports:
- port: 514
targetPort: 514
protocol: TCP
type: LoadBalancer
selector:
app: "rsyslog"
---
apiVersion: v1
kind: Service
metadata:
name: "syslog-service-udp"
spec:
ports:
- port: 514
targetPort: 514
protocol: UDP
type: LoadBalancer
selector:
app: "rsyslog"
따라서 로깅에 사용하려는 프로토콜에 따라
syslog-service-udp.default.svc.cluster.local
와 같은 호스트 이름을 사용할 수 있습니다.이제 CRD 및 로깅 연산자를 만들 수 있습니다.
helm install rancher-logging-crd ./rancher-logging-crd-100.1.2+up3.17.4.tgz -n cattle-logging-system --create-namespace
helm install rancher-logging ./rancher-logging-100.1.2+up3.17.4.tgz -n cattle-logging-system
이 차트의 버전은 일치해야 하며
cattle-logging-system
네임스페이스에 배포되어야 합니다.로깅 연산자에는 두 가지
Flow
(및 클러스터 전체ClusterFlow
) 리소스와 Output
(및 ClusterOutput
) 리소스가 있습니다. 이 예제에서는 네임스페이스에 걸쳐 있는 클러스터 범위 예제를 사용하지만 the matching rules 및 output formatting은 두 경우 모두 유사하게 작동합니다.우리의
ClusterOutput
는 포트 514에서 host: syslog-service-udp.default.svc.cluster.local
를 사용하여 Syslog 서비스에 연결하는 것입니다. 이 경우에는 transport: udp
를 사용합니다.apiVersion: v1
items:
- apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: testing
namespace: cattle-logging-system
spec:
syslog:
buffer:
total_limit_size: 2GB
flush_thread_count: 8
timekey: 10m
timekey_use_utc: true
timekey_wait: 1m
format:
app_name_field: kubernetes.pod_name
hostname_field: custom-cluster-name
log_field: message
rfc6587_message_size: false
host: syslog-service-udp.default.svc.cluster.local
insecure: true
port: 514
transport: udp
kind: List
kubectl get clusteroutput/testing -n cattle-logging-system
를 사용하여 출력 상태(배포 상태, 문제 등)를 확인할 수 있습니다. ClusterOutput
는 운영자 배포가 포함된 네임스페이스여야 합니다. 위 사양의 format
아래에서 로깅 필드에 대한 다른 옵션에 대해 the RFC format을 참조할 수 있습니다.ClusterFlow
에서는 기본 규칙만 사용하고 kube-system
네임스페이스에서 로그를 제외하도록 요청한 다음 select
네임스페이스에서 applications
모든 항목을 제외하도록 요청합니다.apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: global-ns-clusterflow
spec:
match:
- exclude:
namespaces:
- kube-system
- select:
namespaces:
- applications
globalOutputRefs:
- testing
testing
출력을 로그 전송을 위한 글로벌 엔드포인트로 사용하는 것을 볼 수 있습니다. kubectl get clusterflow/global-ns-clusterflow
를 사용하여 흐름의 상태를 확인할 수 있습니다.나는 일반적으로 다음과 같은 배포를 사용하여 이 시점 이후에 테스트합니다.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
그런 다음 제외된 네임스페이스에 한 번 배포한 다음 포함된 네임스페이스에 배포한 다음 몇 가지 요청을 만듭니다(
curl -s http://{LB_IP}
. 출력 및 흐름에 문제가 보고되지 않으면 몇 분 후에 로그가 채워지기 시작하는 것을 볼 수 있습니다). 그런 다음 kubectl exec -it {rsyslog_pod} -- tail -f /var/log/remote/{date hierarchy}/{hour}.log
와 같은 형식으로 로그를 수동으로 확인할 수 있습니다(외부에서 syslog를 스크래핑하는 항목이 없는 경우).BanzaiCloud 오퍼레이터에 대한 자세한 내용은 here, 이 오퍼레이터의 Rancher 로깅 기능에 대한 자세한 내용은 here 에서 확인할 수 있습니다.
Reference
이 문제에 관하여(클러스터 내 Syslog를 사용하는 Rancher 로깅 운영자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmarhee/rancher-logging-operator-with-in-cluster-syslog-16i9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)