반응형
쿠버네티스의 컨테이너에 들어갈 때, --sh와 bash 옵션을 사용한다.
이 옵션의 차이가 뭔지 확인해보자
kubectl exec -n kube-system etcd-k8s-master -it -- sh와
kubectl exec -n kube-system etcd-k8s-master -it bash 명령어는 쿠버네티스 클러스터에서 etcd-k8s-master Pod의 컨테이너 내부로 들어가기 위해 사용되며, 주된 차이점은 쉘 환경에 있다.
1. 명령어 구성
kubectl exec: 특정 Pod의 컨테이너에서 명령어를 실행.
-n kube-system: kube-system 네임스페이스에 있는 Pod를 대상으로 함.
etcd-k8s-master: 실행할 대상 Pod 이름.
-it: Pod 내부의 터미널로 상호작용 가능하게 설정.
sh 또는 bash: 실행할 쉘 환경.
2. 차이점: sh와 bash
sh (Bourne Shell):
더 단순하고 기본적인 쉘.
최소한의 기능만 제공하며, 시스템에 Bash가 없을 때도 사용 가능.
대부분의 Unix 계열 시스템에서 기본적으로 설치되어 있음.
일부 복잡한 스크립트와 명령 구문은 지원하지 않을 수 있음.
bash (Bourne Again Shell):
sh를 확장한 쉘로, 고급 기능(히스토리, 배열, 문자열 처리 등)을 제공.
스크립팅에 더 적합하고, 대화형으로 사용하기 편리.
시스템에 설치되어 있지 않을 수도 있음(특히 컨테이너 이미지가 최소화된 경우).
3. 사용성
sh 사용:
대부분의 컨테이너에서 sh는 기본적으로 설치되어 있어 정상적으로 작동.
최소한의 인터페이스로 시스템 내부 점검 가능.
bash 사용:
bash가 설치된 컨테이너에서만 실행 가능.
설치되지 않은 경우, 다음과 같은 오류 발생:
error: unable to start command 'bash': exec: "bash": executable file not found in $PATH
4. 적용 예시
(1) 컨테이너가 경량 이미지일 경우:
alpine, busybox와 같은 경량 이미지는 기본적으로 bash가 없고, sh만 포함.
이런 경우, sh 명령어로 진입해야 함.
(2) 표준 Linux 배포 이미지일 경우:
Ubuntu, CentOS 같은 배포판은 기본적으로 bash를 포함.
이 경우 bash를 사용하는 것이 편리.
5. 비교 예제
(1) sh 사용
kubectl exec -n kube-system etcd-k8s-master -it -- sh
- 최소한의 쉘 환경.
- 대화형으로 간단한 명령어 실행.
- 예: ls, cd, cat 등 기본 명령 사용.
(2) bash 사용
kubectl exec -n kube-system etcd-k8s-master -it bash
- 더 풍부한 쉘 기능 제공.
- 탭 자동 완성, 명령 히스토리, 스크립트 작성 등.
- 예: ls --color=auto(색상 출력), 배열 처리 등 고급 명령어 사용 가능.
6. 결론
sh: 모든 컨테이너에서 기본적으로 사용할 수 있는 단순한 쉘.
bash: 더 강력한 기능을 제공하지만, 컨테이너에 설치되어 있어야 사용 가능.
7. 기타 / Pod의 쉘 환경을 확인 방법
kubectl exec -n kube-system etcd-k8s-master -it -- ls /bin /usr/bin
더 자세한 내용은 아래의 쿠버네티스 공홈을 방문!!
반응형
'Compute > kubernetis' 카테고리의 다른 글
[CKA] 02. kubectl get 명령어 사용 문제 | kubectl get pods -o name | kubectl get pods -o yaml | jsonpath (0) | 2025.01.11 |
---|---|
CKA | 문제 별 kubernetes.io/docs 검색 keyword 정리 (0) | 2024.12.12 |
[CKA] 01. kubectl autocomplete | context와 manifest의 정의 | CKA 공부를 본격적으로 시작하기 전에 (0) | 2024.12.02 |
[쿠버네티스 시작하기 #3] pv와 pvc 생성 | pv와 pvc의 차이 (3) | 2024.10.21 |
[쿠버네티스 시작하기 #2] pod 생성 / container port 확인 / service 생성 (0) | 2024.10.20 |