-
쿠버네티스 - init container만들기Kubernetes/kubectl 시작 2023. 7. 13. 20:58
이번에는 init container에 대해 알아보자
init container란?
→ init container가 성공 하면 main container를 실행함!
init container란?
- 앱 컨테이너 실행 전에 미리 동작 시킬 컨테이너
- 본 container가 실행되기 전에 사전 작업이 필요할 경우 사용
- 초기화 컨테이너가 모두 실행된 후에 앱 컨테이너를 실행
초기화 컨테이너와 일반 컨테이너 차이점!
- 초기화 컨테이너는 항상 완료를 목표로 실행됨
- 각 초기화 컨테이너는 다음 초기화 컨테이너가 시작되기 전에 성공적으로 완료되어야 함.
→ 만약 파드의 초기화 컨테이너가 실패 → kubelet은 초기화 컨테이너가 성공할 때 까지 반복적으로 재시작함
아래 도메인을 이용하여 컨테이너 예시를 사용해보자!
https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/
초기화 컨테이너
이 페이지는 초기화 컨테이너에 대한 개요를 제공한다. 초기화 컨테이너는 파드의 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너이다. 초기화 컨테이너는 앱 이미지에는 없는 유틸
kubernetes.io
<init-container 내용 >
init container 2개가 성공하는 경우 → main이 실행됨 실제로 virtual box에서 시행해보자
init-container-exam.yaml 을 만들어서 실행
kubectl create -f init-container-exam.yaml
그리고 kubectl get pods -o wide로 확인 → init: 0/2로 아직 main이 동작하지 않고 있음
- 파드 생성 후 디버깅 가능 : kubectl apply -f init-container-exam.yaml
- 좀 더 자세히 보기 : kubectl describe -f init-container-exam.yaml
다음은 로그 확인법
mydb 및 myservice 서비스를 시작하고 나면, 초기화 컨테이너가 완료되고 myapp-pod 가 생성된 것을 볼 수 있다.
그렇다면 하나씩 실행시켜 보는 것으로 진행 (즉 서비스를 보이게 하도록 변경)
cat > init-container-exam-svc.yaml
→ 먼저 service(위의 내용) 내용을 넣어주고, kubectl create -f init-container-exam-svc.yaml 실행해줌
다음
db 부분도 넣어 주고, create 를 한다!
하지만 필자는 이렇게 했음에도 불구하고,
status가 0/2 임으로 오류가 났다는 것을 알 수 있다.
kubectl logs -f myapp-pod를 통해 확인하니 아래와 같았다.
필자의 경우, 관련된 컨테이너를 다 지우고 다시 설정하였다.
비슷한 오류 원인을 참고할 수 있는 url:
https://gist.github.com/ianychoi/e2ff59af1c878cf8b9975478ac6fe41f
쿠버네티스 - 초기화 컨테이너
쿠버네티스 - 초기화 컨테이너. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
참고해서 오류를 잘 해결하도록 하자!
다음에는 cka 즉 쿠버네티스 시험에서 자주 등장하는 static pod에 대해서 다루어 보도록 하겠다!
'Kubernetes > kubectl 시작' 카테고리의 다른 글
쿠버네티스에서 static pod 만들기 - cka 시험에서 자주 출제됨! (0) 2023.08.06 쿠버네티스 self-healing-pod 실제 구현하기 (0) 2023.07.13 쿠버네티스 - self-healing pod 만들기 (0) 2023.07.12 쿠버네티스 파드 관리 및 수정하기 (0) 2023.06.09 쿠버네티스 파드 삭제 (0) 2023.06.09