ASHD Dev_Blog

컨테이너 내부에 접속 (kubectl 없이)

이재룡
이재룡Jun 30, 2025

갑작스런 이슈 ⇒ 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실행