실행 중인 컨테이너에서 셸 얻기
실행 중인 컨테이너에서 셸 얻기 (Get a Shell to a Running Container)
이 페이지는 실행 중인 컨테이너에서 셸을 얻는 방법을 보여드려요.
출처: 문서
본문
시작하기 전에 (Before you begin)
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 구성돼 있어야 해요. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 두 개 이상 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube로 만들거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있어요.
- iximiuz Labs
- Killercoda
- KodeKloud
컨테이너에서 셸 얻기 (Getting a shell to a running container)
이 예시에서는 컨테이너 이미지를 실행하는 Pod를 만들어요.
apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
containers:
- name: nginx
image: nginx
Pod를 생성해요.
kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml
컨테이너가 실행 중인지 확인해요.
kubectl get pod shell-demo
Pod 내부에 있는 컨테이너의 셸에 접근하고 싶다면 다음을 실행해요.
kubectl exec --stdin --tty shell-demo -- /bin/bash
참고: 하이픈 구분 명령과 추가 인자를 구분해야 해요. 컨테이너 내부에서 실행할 명령이 인자를 받는다면,
kubectl exec의--뒤에 배치해 쿠버네티스가 그것을 명령의 일부로 해석하게 해야 해요. 아래 예시에서 명령은/bin/bash이고 인자는-i예요.
kubectl exec --stdin --tty shell-demo -- /bin/bash -i
위 명령을 실행하면 셸 프롬프트가 표시돼요.
root@shell-demo:/#
셸 프롬프트에서 다음과 같은 명령을 실행할 수 있어요.
# List the content in the current directory
ls
웹 서버 비즈니스 로직에 문제가 있다면, 컨테이너 내부에서 이를 진단할 수 있어요. 예를 들어 컨테이너에 데이터가 포함된 디렉토리가 있는지 확인할 수 있어요.
# List the content in the current directory
cat /etc/nginx/conf.d/default.conf
(이어서) 셸 종료, kubectl exec 사용 시 주의 사항 등에 대해서는 원문을 참고하세요.