작성
·
306
0
안녕하세요! 항상 좋은 강의 및 답변 감사드립니다
궁금한 것이 있어서 글을 적습니다.
제가 드리고 싶은 질문은 이것입니다.
파드에 접속하는 것은 어디에 접속하는 것인가요?
예를 들어 파드A에는 컨테이너 2개가 존재합니다.
이 때, k exec 파드A -it -- sh이라는 명령어를 사용해서 파드에 접속합니다.
이 때, 위 명령어는 정확히 어떤 부분에 접속한 것인지 알 수 있을까요?
정확히 어떤 부분에 접속하는 것인지 궁금합니다.
감사합니다!
답변 1
3
안녕하세요, 안상혁님.
튜터 비모입니다.
파드 안에 단일 컨테이너만 존재하는 경우 알고계신 내용처럼 당연히 해당 컨테이너로 연결되나
문의주신 사항인 하나의 파드 안에 여러개의 컨테이너가 존재하는 경우, 아래 문서에서 설명하는 내용과 같이 --container 또는 -c 옵션을 통해 쉘로 접근할 컨테이너를 지정하여 접근하게 됩니다.
- Opening a shell when a Pod has more than one container
https://kubernetes.io/docs/tasks/debug/debug-application/get-shell-running-container/#opening-a-shell-when-a-pod-has-more-than-one-container
kubectl exec -i -t my-pod --container main-app -- /bin/bash
혹시 추가로 궁금하신 점이 있으면 남겨주세요
감사합니다 :)
안녕하세요, 안상혁님.
튜터 비모입니다.
확인해주신 것처럼 --container 옵션이 생략되면 파드의 첫 번째 컨테이너가 기본적으로 선택되어 동작하게 되며, 특정 컨테이너에 접속하고 싶으시다면 해당 옵션을 추가해주시면 됩니다.
- default container behavior
https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2227-kubectl-default-container#current-cli-behaviors
kubectl attach
, kubectl cp
and kubectl exec
The three above have similar behavior: if --container flag is omitted, the first container of the Pod will be chosen.
동작에 대해 보다 자세한 내용이 알고싶으시다면 아래 코드를 확인 부탁 드립니다.
- pick the first container as per existing behavior
https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/util/podcmd/podcmd.go#L56
혹시 추가로 궁금하신 점이 있으면 남겨주세요
감사합니다 :)
비모님 답변 감사드립니다.
말씀해주신 대로 컨테이너 2개를 가진 위의 옵션 없이 파드로 접속할 경우 접속되는 것으로 보이는데요! 이 접속은 default 컨테이너로 접속되는 것으로 보입니다.
옵션을 따로 주지 않으면, 어떠한 로직으로 인해 설정된 default 컨테이너로 접속한다는 의미로 이해하면 될까요?
그리고 특정 컨테이너로 접속하고 싶다면 비모님께서 알려주신 옵션을 추가하면 되구요!?
감사합니다!