갑작스런 이슈 ⇒ Nginx.conf 파일을 찾아라
⇒ argo CD 내부의 pod의 manifest를 확인한 결과,
- nodeName: uoslife-prod-worker-v1-dwmzh-wvvdc
⇒ 107번 노드가 nginx pod를 관리하고 있음을 확인
[ 0. 외부 노드에서는 찾기 불가]
sudo find / -type f -name "*nginx*.conf
- 외부 노드에는 nginx가 설치되어 있지 않음 ⇒ find 결과 없음
2>/dev/null
옵션 : 권한 등의 에러 무시
[ 1. 루트 권한]
sudo -i
- 컨테이너에 들어가기 위해서는 루트 권한이 필요
[ 2. ps aux : 프로세스 나열 ⇒ PID] (-ef 와 유사)
ps aux | grep 'nginx: master’
- Nginx의 마스터 프로세스 탐색 ⇒ PID를 얻음 : 5210
[ 3. 리눅스 Namespace]
리눅스에서 시스템의 리소스를 분리해서 프로세스를 실행할 때,
각각을 단일 namespace!!! (네트워크, 패키징, 실행 중인 프로세스 등..)
nsenter --target <PID> (--mount) sh
- 해당 네임스페이스를 접근 (nsenter ⇒ Namespace Enter)
--mount
: 파일 시스템 (default 옵션)⇒ 파일구조를 호스트가 아닌 컨테이너로
--uts
: 네이밍⇒
hostname
을 호스트가 아닌 컨테이너로
--net
: 네트워크⇒
ipaddr
실행 시 보이는 네트워크를 호스트가 아닌 컨테이너로
--pid
: 실행 중인 프로세스⇒
ps
실행 시 보이는 PID를 호스트가 아닌 컨테이너로
⇒ mount, pid, net 옵션
- 컨테이너의 파일/프로세스/네트워크 환경 진입
⇒ 이후는 sh에 접속 했으므로. 파일만 수정하면 끝
[ 3(외전). kubectl이 있으면 ]
kubectl -n nginx exec -it <deployment 이름> -- sh
👉
kubectl exec POD_NAME [-c CONTAINER] -- [컨테이너 내부 명령]
⇒
⇒
--
이후는 컨테이너 내부에서 실행 : 즉 컨테이너 접속 후 bash실행