# rpi-worker-service-node 작성: AI / 수정: nkey k3s 클러스터에서 **서비스 워커 노드** 역할을 하는 라즈베리파이입니다. 현재 이 레포는 **코드/설정 파일이 비어있을 수 있으며**, 운영은 주로 k3s 리소스(마스터 레포)와 노드 로컬 설정(node-exporter/promtail 등)으로 구성됩니다. ## Quickstart ### Recommended ```bash # (Master) 디스크 채우기 데모 배포 (service 노드에 스케줄되도록 nodeSelector 사용) git clone https://nkeystudy.site/gitea/2025-capstone/rpi-master-node.git cd rpi-master-node kubectl apply -f k3s-manifests/disk-fill-demo.yaml # (Master) Pod 이름 확인 후 exec로 디스크 채우기 POD=$(sudo kubectl get pod -n alert-service -l app=disk-fill-demo -o jsonpath='{.items[0].metadata.name}') sudo kubectl exec -n alert-service "$POD" -- /usr/local/bin/fill_disk_safe.sh /tmp/disk-fill-demo 90 1024 # (Master) 정리 sudo kubectl exec -n alert-service "$POD" -- cleanup_disk.sh /tmp/disk-fill-demo ``` ## Requirements - Runtime/Language: k3s 워커 노드(서비스 실행) - Dependencies: (노드 로컬) node-exporter, promtail - Tools: `kubectl`(마스터에서), `systemctl`(노드에서) ## Configuration ### Environment Variables - (repo 내 설정 파일 없음) ### Ports | Service | Port | Description | |---|---:|---| | node-exporter (node) | 9100 | Prometheus scraping | | promtail (node) | 9080 | Prometheus scraping | ## Usage (minimal) - 노드에 디스크 채우기 데모가 스케줄되도록 라벨(예시) ```bash # (Master) service 노드에 라벨 부여(디스크 데모는 nodeSelector: demo-service="true" 사용) kubectl label node rpi-worker-service demo-service=true ``` - node-exporter 상태 확인(노드에서) ```bash sudo systemctl status node_exporter curl http://localhost:9100/metrics | head ``` - promtail 상태 확인(노드에서) ```bash sudo systemctl status promtail ``` ## (All nodes) node-exporter, promtail 설치 (수동) - https://nkeystudy.site/gitea/2025-capstone/rpi-master-node/README.md 참고 ## 설정 파일 설명 - 이 레포에는 설정 파일이 포함되어 있지 않습니다. - 서비스 노드에서 중요한 “설정/구성”은 아래 2가지 흐름으로 관리됩니다. 1) **K8s 매니페스트**: `rpi-master-node/k3s-manifests/disk-fill-demo.yaml` (service 노드에 스케줄) 2) **노드 로컬 수집기**: node-exporter(prometheus scrape), promtail(loki push) ## Notes - 디스크 채우기 데모 컨테이너에는 `fill_disk_safe.sh`, `cleanup_disk.sh` 등이 포함되어 있으며, `kubectl exec`로 실행합니다(명령은 조직 README 또는 `rpi-master-node` README 참고).