인프런 커뮤니티 질문&답변
기술의 흐름으로 이해하는 컨테이너 질문드립니다!
작성
·
87
1
실습에 문제 발생 시 최대한 캡쳐 화면을 꼭 올려 주세요. (원인 파악에 도움이 큽니다)
영상 내용 질문 시 해당 영상 제목과 내용이 있는 시간을 같이 올려주세요. (내용을 다시 들어보고 답변을 드리기 위해서 입니다)
긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com)
카페 [강의 자료실]에도 많은 질문과 답변들이 있어요!
cafe: https://cafe.naver.com/kubeops
--
9분 58초쯤에 나오는 설명에 대한 질문입니다.
kubelet에서 컨테이너 런타임으로 바로 받는다는 의미가 잘 이해가 안갑니다.
우선 제가 이해한것을 말씀드리겠습니다.!
CRI를 이용해서 grpc로 통신하는 방법에서
CRI-plugin을 통해 직접 받는 방법으로 변경되었다.
각각의 컨테이너 밴더에서 플러그인을 구현하고 kubelet에서 해당 플러그인을 직접 호출한다.
여기서 궁금한 점입니다!
CRI 구조에서, 도커의 새로운 기능이 생기면 쿠버네티스도 패치해야한다고 하셨는데 이는 CRI-plugin를 이용할때도 동일한게 아닌가요? 둘의 개발 라이프사이클을 다르게 가져갈 수 있는 이유가 궁금합니다.
새로운 기능이 생겨도 인터페이스만 맞으면 되는 것인데,인터페이스의 변화가 필요하다면 결국은 플러그인이나 CRI나 kubelet의 변화도 필요한게 아닌가요??
답변 2
0
AI 인턴이 잘 대답해준거 같네요.
새로운 기능이 추가되더라도, 기존 CRI 인터페이스를 유지하면서 확장하면 kubelet은 수정할 필요가 없습니다. 예를 들어, containerd에서 새로운 기능이 생기더라도 CRI 플러그인에서 지원하면 kubelet은 그대로 유지될 수 있습니다. 반면, CRI 자체가 변경되면 kubelet도 업데이트해야겠지만, 이런 변경은 자주 발생하지 않아요.
근데 왜 도커의 새로운 기능이 생기면 CRI-plugin를 이용할때도 동일하다고 생각하시는지요?
0
안녕하세요, 인프런 AI 인턴입니다.
ㅎㅇㅎㅇㅎㅇ님께서 질문하신 내용은 쿠버네티스의 CRI(Container Runtime Interface) 구조와 관련된 부분입니다. kubelet이 컨테이너 런타임을 어떻게 호출하고, 인터페이스의 변화가 어떻게 영향을 미치는지에 대해 이해하기 어려우신 것 같습니다.
CRI와 플러그인의 관계:
- CRI는 쿠버네티스가 다양한 컨테이너 런타임과 상호작용할 수 있도록 정의된 표준 인터페이스입니다. 이를 통해, 쿠버네티스와 컨테이너 런타임 간의 의사소통이 표준화됩니다.
- CRI 플러그인은 각 컨테이너 런타임을 위한 인터페이스 구현체입니다. 즉, 각 런타임 벤더에서 CRI 표준에 맞는 플러그인을 구현하여 kubelet이 이를 호출하게 됩니다.
- CRI는 쿠버네티스가 다양한 컨테이너 런타임과 상호작용할 수 있도록 정의된 표준 인터페이스입니다. 이를 통해, 쿠버네티스와 컨테이너 런타임 간의 의사소통이 표준화됩니다.
개발 라이프사이클의 독립성:
- CRI 구조 덕분에 쿠버네티스와 컨테이너 런타임의 개발 주기가 서로 독립적으로 진행될 수 있습니다. 이는 kubelet과 런타임 간의 의사소통을 표준화된 인터페이스를 통해 하기 때문입니다.
- 인터페이스가 변하지 않는 한, 각각의 새로운 기능이 추가되더라도 서로간의 코드 변경이 최소화될 수 있습니다.
- CRI 구조 덕분에 쿠버네티스와 컨테이너 런타임의 개발 주기가 서로 독립적으로 진행될 수 있습니다. 이는 kubelet과 런타임 간의 의사소통을 표준화된 인터페이스를 통해 하기 때문입니다.
인터페이스의 변화가 필요한 경우:
- 질문하신 것처럼, 인터페이스 자체에 변화가 필요하다면, 이는 kubelet과 관련된 변경이 필요하게 됩니다. 그러나, 이러한 변화는 매우 신중하게 이루어지며, 버전 관리와 같은 안전 장치가 함께 적용됩니다.
- 질문하신 것처럼, 인터페이스 자체에 변화가 필요하다면, 이는 kubelet과 관련된 변경이 필요하게 됩니다. 그러나, 이러한 변화는 매우 신중하게 이루어지며, 버전 관리와 같은 안전 장치가 함께 적용됩니다.
이와 관련된 더 구체적인 설명이 필요하시다면 아래의 링크를 통해 비슷한 주제를 다룬 답변을 참고하시는 것이 도움이 될 수 있습니다:
- kubelet interface: 이 답변에서는 kubelet 소스코드 로직 구성 및 개발 라이프사이클에 대해 좀 더 구체적으로 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




