2017-12-27 23 views
0

컨테이너에서 실행되는 프로그램이 로그를 저장하는 위치를 파악하려고합니다. 하지만 컨테이너를 배포 한 시스템에 대한 SSH 액세스는 없으며 단지 kubectl입니다. 내가 SSH 접근 있다고 가정, 나는 이런 식으로 뭔가를 할 거라고 :Kubernetes는 docker diff와 유사합니까?

ssh machine-running-docker 'docker diff \ 
    $(kubectl describe pod pod-name | \ 
     grep 'Conainer ID' | sed -E s#^[^/]+//(.+)$#\1#)' 

(정규식 그냥 아이디어를주고, 부정확 할 수 있음).

답변

1

글쎄, 처음에는 컨테이너에있는 앱이 로그를 컨테이너 내부의 파일에 저장해서는 안됩니다. 즉, stdout/일부 로깅 서비스에 로깅하도록 구성되지 않은 타사 응용 프로그램을 사용하여 작업 할 때 피하는 것이 때때로 어렵습니다.

구급대에 잘 보관 됨 find - 단지 kubectl exec이 포드/컨테이너에 들어가고 find/-mmin -1은 지난 1 분 동안 수정 된 모든 파일을 제공합니다. 그렇게하면 목록을 충분히 좁힐 수 있습니다 (컨테이너가 이미 몇 분 동안 살았다 고 가정).

+0

그래 ...이 방법이 효과적 일지 모르지만 'diff'와 비교해 보면 속도가 매우 느립니다. 특히 컨테이너가 거대한 파일 시스템 공유를 마운트하거나, 신이 NFS 공유를 금지하면 ... – wvxvw