기술의 흐름으로 이해하는 컨테이너 질문드립니다!
112
작성한 질문수 25
실습에 문제 발생 시 최대한 캡쳐 화면을 꼭 올려 주세요. (원인 파악에 도움이 큽니다)
영상 내용 질문 시 해당 영상 제목과 내용이 있는 시간을 같이 올려주세요. (내용을 다시 들어보고 답변을 드리기 위해서 입니다)
긴 로그는 제 메일로 보내주세요. (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 소스코드 로직 구성 및 개발 라이프사이클에 대해 좀 더 구체적으로 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
젠킨스버전과 플러그인설치
1
32
2
강의자료 원본 애니메이션처리가 되어 있을까요?
1
87
1
get pods 했을 때 connection refused가 뜹니다.
1
91
3
베이그란트 플러그인 설치 실패
1
86
1
실습겸 미니pc사보려는데 이정도면 괜찮을까요?
0
94
2
Image updater 1.0 이후 CRD 기반 변경 시 적용 방법 공유합니다.
1
85
1
기본 values 파일과 service name에 대한 질문이 있습니다.
0
73
2
Sprint 2 강의에서 yaml 파일들 경로에 대해 궁금한게 있어요.
1
64
2
Selector의 속성에 대해 질문 드립니다.
1
60
1
인스턴스 스펙
1
70
2
Container 기술 관련해서 질문드립니다.
1
83
3
Jenkins 빌드 UI 설정 관련 질문드립니다.
1
86
3
Jenkins 빌드 진행 UI 설정
0
70
1
cicd 서버 올린 후 기존 마스터 노드 기동 시 네트워크 에러
1
80
2
HPA - Auto Scaling 실습 관련 에러 해결 공유.
1
66
1
Loki-Stack 실습 관련 질문
1
74
2
Self-Healing 테스트 중 문의사항
1
73
2
영상 내용과 강의 자료가 상이해서 강의 듣기가 짜증납니다.
0
108
2
젠킨스 구축 9단계 오류
1
89
3
실습환경 네트워크 끊김 및 느린 속도 관련 질문
1
86
2
온프레미스 환경에 쿠버네티스도입
1
102
1
SealedSecret 관련 궁금증.
1
53
1
vagrant up 사용 시 The SSH connection was unexpectedly closed by the remote end
1
90
2
젠킨스 배포 질문
1
60
2





