ãã®ããŒãžã«èšèŒãããŠããæ å ±ã¯å€ãå¯èœæ§ããããŸã
ãã®ããŒãžã®æŽæ°æ¥ã¯è±èªçãããå€ããããèšèŒãããŠããæ å ±ãå€ãå¯èœæ§ããããŸããææ°ã®æ å ±ãã芧ã«ãªãããæ¹ã¯è±èªçã®ããŒãžãã芧ãã ãã: Logging Architecture
ãã®ã³ã°ã®ã¢ãŒããã¯ãã£
ã¢ããªã±ãŒã·ã§ã³ãã°ã¯ãã¢ããªã±ãŒã·ã§ã³å ã§äœãèµ·ãã£ãŠããããçè§£ããã®ã«åœ¹ç«ã¡ãŸãããã°ã¯ãåé¡ã®ãããã°ãšã¯ã©ã¹ã¿ãŒã¢ã¯ãã£ããã£ã®ç£èŠã«ç¹ã«åœ¹ç«ã¡ãŸããæè¿ã®ã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãäœããã®ãã®ã³ã°ã¡ã«ããºã ããããŸããåæ§ã«ãã³ã³ãããšã³ãžã³ã¯ãã®ã³ã°ããµããŒãããããã«èšèšãããŠããŸããã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ã§ãæãç°¡åã§æãæ¡çšãããŠãããã®ã³ã°æ¹æ³ã¯ãæšæºåºåãšæšæºãšã©ãŒã¹ããªãŒã ãžã®æžã蟌ã¿ã§ãã
ãã ããã³ã³ãããšã³ãžã³ãŸãã¯ã©ã³ã¿ã€ã ã«ãã£ãŠæäŸããããã€ãã£ãæ©èœã¯ããããŠãã®å Žåãå®å šãªãã®ã³ã°ãœãªã¥ãŒã·ã§ã³ã«ã¯ååã§ã¯ãããŸããã
ããšãã°ãã³ã³ãããã¯ã©ãã·ã¥ããå ŽåãPodãåé€ãããå ŽåããŸãã¯ããŒãã忢ããå Žåã«ãã¢ããªã±ãŒã·ã§ã³ã®ãã°ã«ã¢ã¯ã»ã¹ãããå ŽåããããŸãã
ã¯ã©ã¹ã¿ãŒã§ã¯ãããŒããPodããŸãã¯ã³ã³ããã«é¢ä¿ãªããããŒãã«åå¥ã®ã¹ãã¬ãŒãžãšã©ã€ããµã€ã¯ã«ãå¿ èŠã§ãããã®æŠå¿µã¯ãã¯ã©ã¹ã¿ãŒã¬ãã«ãã®ã³ã° ãšåŒã°ããŸãã
ã¯ã©ã¹ã¿ãŒã¬ãã«ãã®ã³ã°ã®ã¢ãŒããã¯ãã£ã§ã¯ããã°ãä¿åãåæãããã³ã¯ãšãªããããã®åå¥ã®ããã¯ãšã³ããå¿ èŠã§ããKubernetesã¯ããã°ããŒã¿çšã®ãã€ãã£ãã¹ãã¬ãŒãžãœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸããã代ããã«ãKubernetesã«çµ±åãããå€ãã®ãã®ã³ã°ãœãªã¥ãŒã·ã§ã³ããããŸããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ãããŒãã§ãã°ãåŠçããã³ä¿åããæ¹æ³ã«ã€ããŠèª¬æããŸãã
Kubernetesã§ã®åºæ¬çãªãã®ã³ã°
ãã®äŸã§ã¯ã1ç§ã«1åæšæºåºåã¹ããªãŒã ã«ããã¹ããæžã蟌ãã³ã³ãããå©çšãããPod
specificationã䜿ããŸãã
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox
args: [/bin/sh, -c,
'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
ãã®Podãå®è¡ããã«ã¯ã次ã®ã³ãã³ãã䜿çšããŸã:
kubectl apply -f https://k8s.io/examples/debug/counter-pod.yaml
åºåã¯æ¬¡ã®ããã«ãªããŸã:
pod/counter created
ãã°ãååŸããã«ã¯ã以äžã®ããã«kubectl logs
ã³ãã³ãã䜿çšããŸã:
kubectl logs counter
åºåã¯æ¬¡ã®ããã«ãªããŸã:
0: Mon Jan 1 00:00:00 UTC 2001
1: Mon Jan 1 00:00:01 UTC 2001
2: Mon Jan 1 00:00:02 UTC 2001
...
ã³ã³ããã®ä»¥åã®ã€ã³ã¹ã¿ã³ã¹ãããã°ãååŸããããã«ãkubectl logs --previous
ã䜿çšã§ããŸããPodã«è€æ°ã®ã³ã³ãããããå Žåã¯ã次ã®ããã«-cãã©ã°ã§ã³ãã³ãã«ã³ã³ããåã远å ããããšã§ãã¢ã¯ã»ã¹ããã³ã³ããã®ãã°ãæå®ããŸãã
kubectl logs counter -c count
詳现ã«ã€ããŠã¯ãkubectl logs
ããã¥ã¡ã³ããåç
§ããŠãã ããã
ããŒãã¬ãã«ã§ã®ãã®ã³ã°
ã³ã³ãããšã³ãžã³ã¯ãçæãããåºåãåŠçããŠãã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ã®stdout
ãšstderr
ã¹ããªãŒã ã«ãªãã€ã¬ã¯ãããŸããããšãã°ãDockerã³ã³ãããšã³ãžã³ã¯ãããã2ã€ã®ã¹ããªãŒã ããã®ã³ã°ãã©ã€ããŒã«ãªãã€ã¬ã¯ãããŸãããã®ã³ã°ãã©ã€ããŒã¯ãJSON圢åŒã§ãã¡ã€ã«ã«æžã蟌ãããã«Kubernetesã§èšå®ãããŠããŸãã
åè:
Docker JSONãã®ã³ã°ãã©ã€ããŒã¯ãåè¡ãåå¥ã®ã¡ãã»ãŒãžãšããŠæ±ããŸããDockerãã®ã³ã°ãã©ã€ããŒã䜿çšããå Žåãè€æ°è¡ã¡ãã»ãŒãžãçŽæ¥ãµããŒãããããšã¯ã§ããŸããããã®ã³ã°ãšãŒãžã§ã³ãã¬ãã«ãããã¯ãã以äžã®ã¬ãã«ã§ãè€æ°è¡ã®ã¡ãã»ãŒãžãåŠçããå¿ èŠããããŸããããã©ã«ãã§ã¯ãã³ã³ãããåèµ·åãããšãkubeletã¯1ã€ã®çµäºããã³ã³ããããã°ãšãšãã«ä¿æããŸããPodãããŒãããåé€ããããšã察å¿ããå šãŠã®ã³ã³ãããããã°ãšãšãã«åé€ãããŸãã
ããŒãã¬ãã«ãã®ã³ã°ã§ã®éèŠãªèæ
®äºé
ã¯ãããŒãã§äœ¿çšå¯èœãªå
šãŠã®ã¹ãã¬ãŒãžããã°ãæ¶è²»ããªãããã«ããã°ããŒããŒã·ã§ã³ãå®è£
ããããšã§ããKubernetesã¯ãã°ã®ããŒããŒã·ã§ã³ãæ
åœããŸãããããããã€ããŒã«ã§ããã«å¯ŸåŠãããœãªã¥ãŒã·ã§ã³ãæ§ç¯ããå¿
èŠããããŸããããšãã°ãkube-up.sh
ã¹ã¯ãªããã«ãã£ãŠãããã€ãããKubernetesã¯ã©ã¹ã¿ãŒã«ã¯ã1æéããšã«å®è¡ããããã«æ§æãããlogrotate
ããŒã«ããããŸããã¢ããªã±ãŒã·ã§ã³ã®ãã°ãèªåçã«ããŒããŒã·ã§ã³ããããã«ã³ã³ããã©ã³ã¿ã€ã ãæ§ç¯ããããšãã§ããŸãã
äŸãšããŠãconfigure-helper
scriptã«å¯Ÿå¿ããã¹ã¯ãªããã§ããkube-up.sh
ããã©ã®ããã«GCPã§COSã€ã¡ãŒãžã®ãã®ã³ã°ãæ§ç¯ããŠãããã«ã€ããŠãè©³çŽ°ãªæ
å ±ãèŠã€ããããšãã§ããŸãã
CRIã³ã³ããã©ã³ã¿ã€ã ã䜿çšããå Žåãkubeletã¯ãã°ã®ããŒããŒã·ã§ã³ãšãã°ãã£ã¬ã¯ããªæ§é ã®ç®¡çãæ
åœããŸããkubeletã¯ãã®æ
å ±ãCRIã³ã³ããã©ã³ã¿ã€ã ã«éä¿¡ããã©ã³ã¿ã€ã ã¯ã³ã³ãããã°ãæå®ãããå Žæã«æžã蟌ã¿ãŸãã2ã€ã®kubeletãã©ã¡ãŒã¿ãŒãcontainer-log-max-size
ãšcontainer-log-max-files
ãkubeletèšå®ãã¡ã€ã«ã§äœ¿ãããšã§ãåãã°ãã¡ã€ã«ã®æå€§ãµã€ãºãšåã³ã³ããã§èš±å¯ããããã¡ã€ã«ã®æå€§æ°ãããããèšå®ã§ããŸãã
åºæ¬çãªãã®ã³ã°ã®äŸã®ããã«ãkubectl logs
ãå®è¡ãããšãããŒãäžã®kubeletããªã¯ãšã¹ããåŠçãããã°ãã¡ã€ã«ããçŽæ¥èªã¿åããŸããkubeletã¯ãã°ãã¡ã€ã«ã®å
容ãè¿ããŸãã
åè:
å€éšã·ã¹ãã ãããŒããŒã·ã§ã³ãå®è¡ããå ŽåããŸãã¯CRIã³ã³ããã©ã³ã¿ã€ã ã䜿çšãããŠããå Žåã¯ãææ°ã®ãã°ãã¡ã€ã«ã®å 容ã®ã¿ãkubectl logs
ã§å©çšå¯èœã«ãªããŸããäŸãã°ã10MBã®ãã¡ã€ã«ãããå Žåãlogrotate
ã«ããããŒããŒã·ã§ã³ãå®è¡ããããšã2ã€ã®ãã¡ã€ã«ãååšããããšã«ãªããŸã: 1ã€ã¯ãµã€ãºã10MBã®ãã¡ã€ã«ã§ããã1ã€ã¯ç©ºã®ãã¡ã€ã«ã§ãããã®äŸã§ã¯ãkubectl logs
ã¯ææ°ã®ãã°ãã¡ã€ã«ã®å
容ãã€ãŸã空ã®ã¬ã¹ãã³ã¹ãè¿ããŸããã·ã¹ãã ã³ã³ããŒãã³ããã°
ã·ã¹ãã ã³ã³ããŒãã³ãã«ã¯ãã³ã³ããå ã§å®è¡ããããã®ãšã³ã³ããå ã§å®è¡ãããªããã®ã®2çš®é¡ããããŸããäŸãã°ä»¥äžã®ãšããã§ãã
- Kubernetesã¹ã±ãžã¥ãŒã©ãŒãškube-proxyã¯ã³ã³ããå ã§å®è¡ãããŸãã
- kubeletãšã³ã³ããã©ã³ã¿ã€ã ã¯ã³ã³ããå ã§å®è¡ãããŸããã
systemdãæèŒãããã·ã³ã§ã¯ãkubeletãšã³ã³ããã©ã³ã¿ã€ã ãjournaldã«æžã蟌ã¿ãŸããsystemdãååšããªãå Žåãkubeletãšã³ã³ããã©ã³ã¿ã€ã ã¯var/log
ãã£ã¬ã¯ããªå
ã®.log
ãã¡ã€ã«ã«æžã蟌ã¿ãŸããã³ã³ããå
ã®ã·ã¹ãã ã³ã³ããŒãã³ãã¯ãããã©ã«ãã®ãã®ã³ã°ã¡ã«ããºã ãè¿åããŠãåžžã«/var/log
ãã£ã¬ã¯ããªã«æžã蟌ã¿ãŸãããããã¯klog
ãšãããã®ã³ã°ã©ã€ãã©ãªã䜿çšããŸãããããã®ã³ã³ããŒãã³ãã®ãã®ã³ã°ã®é倧æ§ã«é¢ããèŠåã¯ãdevelopment docs on loggingã«èšèŒãããŠããŸãã
ã³ã³ãããã°ãšåæ§ã«ã/var/log
ãã£ã¬ã¯ããªå
ã®ã·ã¹ãã ã³ã³ããŒãã³ããã°ã¯ããŒããŒã·ã§ã³ããå¿
èŠããããŸããkube-up.sh
ã¹ã¯ãªããã«ãã£ãŠçæãããKubernetesã¯ã©ã¹ã¿ãŒã§ã¯ããããã®ãã°ã¯ãlogrotate
ããŒã«ã«ãã£ãŠæ¯æ¥ããŸãã¯ãµã€ãºã100MBãè¶
ããæã«ããŒããŒã·ã§ã³ãããããã«èšå®ãããŠããŸãã
ã¯ã©ã¹ã¿ãŒã¬ãã«ãã®ã³ã°ã®ã¢ãŒããã¯ãã£
Kubernetesã¯ã¯ã©ã¹ã¿ãŒã¬ãã«ãã®ã³ã°ã®ãã€ãã£ããœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸããããæ€èšå¯èœãªäžè¬çãªã¢ãããŒããããã€ããããŸããããã«ããã€ãã®ãªãã·ã§ã³ã瀺ããŸã:
- å šãŠã®ããŒãã§å®è¡ãããããŒãã¬ãã«ã®ãã®ã³ã°ãšãŒãžã§ã³ãã䜿çšããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®Podã«ãã°ã€ã³ããããã®å°çšã®ãµã€ãã«ãŒã³ã³ãããå«ããŸãã
- ã¢ããªã±ãŒã·ã§ã³å ããããã¯ãšã³ãã«çŽæ¥ãã°ãéä¿¡ããŸãã
ããŒããã®ã³ã°ãšãŒãžã§ã³ãã®äœ¿çš
åããŒãã« ããŒãã¬ãã«ã®ãã®ã³ã°ãšãŒãžã§ã³ã ãå«ããããšã§ãã¯ã©ã¹ã¿ãŒã¬ãã«ãã®ã³ã°ãå®è£ ã§ããŸãããã®ã³ã°ãšãŒãžã§ã³ãã¯ããã°ãå ¬éãããããã°ãããã¯ãšã³ãã«éä¿¡ãããããå°çšã®ããŒã«ã§ããéåžžããã®ã³ã°ãšãŒãžã§ã³ãã¯ããã®ããŒãäžã®å šãŠã®ã¢ããªã±ãŒã·ã§ã³ã³ã³ããããã®ãã°ãã¡ã€ã«ãå«ããã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ã§ããã³ã³ããã§ãã
ãã®ã³ã°ãšãŒãžã§ã³ãã¯å
šãŠã®ããŒãã§å®è¡ããå¿
èŠãããããããšãŒãžã§ã³ããDaemonSet
ãšããŠå®è¡ããããšãããããããŸãã
ããŒãã¬ãã«ã®ãã®ã³ã°ã¯ãããŒãããšã«1ã€ã®ãšãŒãžã§ã³ãã®ã¿ãäœæããããŒãã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ã«å€æŽãå ããå¿ èŠã¯ãããŸããã
ã³ã³ããã¯stdoutãšstderrã«æžã蟌ã¿ãŸãããåæããã圢åŒã¯ãããŸãããããŒãã¬ãã«ã®ãšãŒãžã§ã³ãã¯ãããã®ãã°ãåéããéçŽã®ããã«è»¢éããŸãã
ãã®ã³ã°ãšãŒãžã§ã³ãã§ãµã€ãã«ãŒã³ã³ããã䜿çšãã
ãµã€ãã«ãŒã³ã³ããã¯ã次ã®ããããã®æ¹æ³ã§äœ¿çšã§ããŸã:
- ãµã€ãã«ãŒã³ã³ããã¯ãã¢ããªã±ãŒã·ã§ã³ãã°ãèªèº«ã®
stdout
ã«ã¹ããªãŒãã³ã°ããŸãã - ãµã€ãã«ãŒã³ã³ããã¯ãã¢ããªã±ãŒã·ã§ã³ã³ã³ãããããã°ãååŸããããã«èšå®ããããã®ã³ã°ãšãŒãžã§ã³ããå®è¡ããŸãã
ã¹ããªãŒãã³ã°ãµã€ãã«ãŒã³ã³ãã
ãµã€ãã«ãŒã³ã³ããã«èªèº«ã®stdout
ãstderr
ã¹ããªãŒã ãžã®æžã蟌ã¿ãè¡ãããããšã§ãåããŒãã§ãã§ã«å®è¡ãããŠããkubeletãšãã®ã³ã°ãšãŒãžã§ã³ããå©çšã§ããŸãããµã€ãã«ãŒã³ã³ããã¯ããã¡ã€ã«ããœã±ããããŸãã¯journaldãããã°ãèªã¿åããŸããåãµã€ãã«ãŒã³ã³ããã¯ããã°ãèªèº«ã®stdout
ãŸãã¯stderr
ã¹ããªãŒã ã«åºåããŸãã
ãã®ã¢ãããŒãã«ãããstdout
ãŸãã¯stderr
ãžã®æžã蟌ã¿ã®ãµããŒããäžè¶³ããŠããå Žåãå«ããã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåããããã€ãã®ãã°ã¹ããªãŒã ãåé¢ã§ããŸãããã°ã®ãªãã€ã¬ã¯ãã®èåŸã«ããããžãã¯ã¯æå°éã§ããããã倧ããªãªãŒããŒãããã«ã¯ãªããŸãããããã«ãstdout
ãšstderr
ã¯kubeletã«ãã£ãŠåŠçããããããkubectl logs
ã®ãããªçµã¿èŸŒã¿ããŒã«ã䜿çšã§ããŸãã
ããšãã°ãPodã¯åäžã®ã³ã³ãããå®è¡ããã³ã³ããã¯2ã€ã®ç°ãªã圢åŒã䜿çšããŠ2ã€ã®ç°ãªããã°ãã¡ã€ã«ã«æžã蟌ã¿ãŸããPodã®æ§æãã¡ã€ã«ã¯æ¬¡ã®ãšããã§ã:
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/1.log;
echo "$(date) INFO $i" >> /var/log/2.log;
i=$((i+1));
sleep 1;
done
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
äž¡æ¹ã®ã³ã³ããŒãã³ããã³ã³ããã®stdout
ã¹ããªãŒã ã«ãªãã€ã¬ã¯ãã§ãããšããŠããç°ãªã圢åŒã®ãã°ãšã³ããªãåããã°ã¹ããªãŒã ã«æžã蟌ãããšã¯ããããããŸããã代ããã«ã2ã€ã®ãµã€ãã«ãŒã³ã³ãããäœæã§ããŸããåãµã€ãã«ãŒã³ã³ããã¯ãå
±æããªã¥ãŒã ããç¹å®ã®ãã°ãã¡ã€ã«ã远跡ãããã°ãèªèº«ã®stdout
ã¹ããªãŒã ã«ãªãã€ã¬ã¯ãã§ããŸãã
2ã€ã®ãµã€ãã«ãŒã³ã³ãããæã€Podã®æ§æãã¡ã€ã«ã¯æ¬¡ã®ãšããã§ã:
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/1.log;
echo "$(date) INFO $i" >> /var/log/2.log;
i=$((i+1));
sleep 1;
done
volumeMounts:
- name: varlog
mountPath: /var/log
- name: count-log-1
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/1.log']
volumeMounts:
- name: varlog
mountPath: /var/log
- name: count-log-2
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/2.log']
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
ããã§ããã®Podãå®è¡ãããšãã«ã次ã®ã³ãã³ããå®è¡ããŠãåãã°ã¹ããªãŒã ã«åå¥ã«ã¢ã¯ã»ã¹ã§ããŸã:
kubectl logs counter count-log-1
åºåã¯æ¬¡ã®ããã«ãªããŸã:
0: Mon Jan 1 00:00:00 UTC 2001
1: Mon Jan 1 00:00:01 UTC 2001
2: Mon Jan 1 00:00:02 UTC 2001
...
kubectl logs counter count-log-2
åºåã¯æ¬¡ã®ããã«ãªããŸã:
Mon Jan 1 00:00:00 UTC 2001 INFO 0
Mon Jan 1 00:00:01 UTC 2001 INFO 1
Mon Jan 1 00:00:02 UTC 2001 INFO 2
...
ã¯ã©ã¹ã¿ãŒã«ã€ã³ã¹ããŒã«ãããŠããããŒãã¬ãã«ã®ãšãŒãžã§ã³ãã¯ããã以äžã®èšå®ãè¡ããªããŠãããããã®ãã°ã¹ããªãŒã ãèªåçã«ååŸããŸããå¿ èŠãããã°ããœãŒã¹ã³ã³ããã«å¿ããŠãã°ãããŒã¹ããããã«ãšãŒãžã§ã³ããæ§æã§ããŸãã
CPUãšã¡ã¢ãªãŒã®äœ¿çšéãå°ãªã(CPUã®å Žåã¯æ°ããªã³ã¢ã®ãªãŒããŒãã¡ã¢ãªãŒã®å Žåã¯æ°ã¡ã¬ãã€ãã®ãªãŒããŒ)ã«ãé¢ãããããã°ããã¡ã€ã«ã«æžã蟌ãã§ããstdout
ã«ã¹ããªãŒãã³ã°ãããšããã£ã¹ã¯ã®äœ¿çšéã2åã«ãªãå¯èœæ§ãããããšã«æ³šæããŠãã ãããåäžã®ãã¡ã€ã«ã«æžã蟌ãã¢ããªã±ãŒã·ã§ã³ãããå Žåã¯ãã¹ããªãŒãã³ã°ãµã€ãã«ãŒã³ã³ããã¢ãããŒããå®è£
ããã®ã§ã¯ãªãã/dev/stdout
ãå®å
ãšããŠèšå®ããããšãããããããŸãã
ãµã€ãã«ãŒã³ã³ããã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³èªäœã§ã¯ããŒããŒã·ã§ã³ã§ããªããã°ãã¡ã€ã«ãããŒããŒã·ã§ã³ããããšãã§ããŸãããã®ã¢ãããŒãã®äŸã¯ãlogrotate
ã宿çã«å®è¡ããå°ããªã³ã³ããã§ããããããstdout
ãšstderr
ãçŽæ¥äœ¿ããããŒããŒã·ã§ã³ãšä¿æã®ããªã·ãŒãkubeletã«ä»»ããããšãããããããŸãã
ãã®ã³ã°ãšãŒãžã§ã³ãã䜿çšãããµã€ãã«ãŒã³ã³ãã
ããŒãã¬ãã«ãã®ã³ã°ã®ãšãŒãžã§ã³ãããããªãã®ç¶æ³ã«å¿ èŠãªã ãã®æè»æ§ãåããŠããªãå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã§å®è¡ããããã«ç¹å¥ã«æ§æããå¥ã®ãã®ã³ã°ãšãŒãžã§ã³ãã䜿çšããŠãµã€ãã«ãŒã³ã³ãããäœæã§ããŸãã
åè:
ãµã€ãã«ãŒã³ã³ããã§ãã®ã³ã°ãšãŒãžã§ã³ãã䜿çšãããšã倧éã®ãªãœãŒã¹ãæ¶è²»ãããå¯èœæ§ããããŸããããã«ããããã®ãã°ã¯kubeletã«ãã£ãŠå¶åŸ¡ãããŠããªããããkubectl logs
ã䜿çšããŠãããã®ãã°ã«ã¢ã¯ã»ã¹ããããšãã§ããŸããããã®ã³ã°ãšãŒãžã§ã³ãã䜿çšãããµã€ãã«ãŒã³ã³ãããå®è£
ããããã«äœ¿çšã§ããã2ã€ã®æ§æãã¡ã€ã«ã次ã«ç€ºããŸããæåã®ãã¡ã€ã«ã«ã¯ãfluentdãèšå®ããããã®ConfigMap
ãå«ãŸããŠããŸãã
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
data:
fluentd.conf: |
<source>
type tail
format none
path /var/log/1.log
pos_file /var/log/1.log.pos
tag count.format1
</source>
<source>
type tail
format none
path /var/log/2.log
pos_file /var/log/2.log.pos
tag count.format2
</source>
<match **>
type google_cloud
</match>
åè:
fluentdã®æ§æã«ã€ããŠã¯ãfluentd documentationãåç §ããŠãã ããã2çªç®ã®ãã¡ã€ã«ã¯ãfluentdãå®è¡ããŠãããµã€ãã«ãŒã³ã³ãããæã€Podã瀺ããŠããŸããPodã¯ãfluentdãæ§æããŒã¿ãååŸã§ããããªã¥ãŒã ãããŠã³ãããŸãã
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox:1.28
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/1.log;
echo "$(date) INFO $i" >> /var/log/2.log;
i=$((i+1));
sleep 1;
done
volumeMounts:
- name: varlog
mountPath: /var/log
- name: count-agent
image: registry.k8s.io/fluentd-gcp:1.30
env:
- name: FLUENTD_ARGS
value: -c /etc/fluentd-config/fluentd.conf
volumeMounts:
- name: varlog
mountPath: /var/log
- name: config-volume
mountPath: /etc/fluentd-config
volumes:
- name: varlog
emptyDir: {}
- name: config-volume
configMap:
name: fluentd-config
ãµã³ãã«æ§æã§ã¯ãfluentdãä»»æã®ãã®ã³ã°ãšãŒãžã§ã³ãã«çœ®ãæããŠãã¢ããªã±ãŒã·ã§ã³ã³ã³ããå ã®ä»»æã®ãœãŒã¹ããèªã¿åãããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ããçŽæ¥ãã°ãå ¬éãã
ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ããçŽæ¥ãã°ãå ¬éãŸãã¯éä¿¡ããã¯ã©ã¹ã¿ãŒãã®ã³ã°ã¯ãKubernetesã®ã¹ã³ãŒãå€ã§ãã