2023. 4. 7. 21:51ㆍKubernetes
본 글은 Udemy 의 CKA 강의를 정리한 글입니다
쿠버네티스는 Docker 의 오케스트레이션 역할을 하면서, Docker 만 지원했었다.
근데, 쿠버네티스가 인기를 얻자. k8s 사용자는 Docker 이상의 컨테이너 런타임과 작업하려했고,
런타임 인터페이스 ,CRI (Container Runtime Interface)라는 인터페이스를 소개 했다.
CRI 는 OCI 를 준수하는 한 어떤 공급업체든 k8s 의 컨테이너 런타임으로 작업하게 해준다.
OCI (Open Container initiative) 는 이미지펙과 런타임스펙으로 구성돼 있다.
ImageSpec 은 이미지를 어떻게 빌드해야하는가를 명세한다.
runtimerspec 은 container runtime 이 어떻게 개발돼야하는가를 명세한다.
Docker 는 CRI 표준이전에 나와서 표준에 맞진 않는다. 그래도 Docker 가 주요 컨테이너 도구였기 때문에
그래서 dockershim 을 도입했다. (컨테이너 런타임 인터페이스 밖에서 Docker 를 지속 지원하는 임시 방편이다.
Docker 는 컨테이너 런타임만 있는게 아니라 여러개 도구들로 이루어져 있다.
CLI, API - 이미지 구축을 돕는 빌드 도구
Volumes, auth, 보안
runC 라는 컨테이너 런타임과 관리하는 runC Demon 도 있었는데 이를 ContainerD 라고 부른다.
contianerD 는 CRI호환이 가능하고, 다른 런타임처럼 k8s와 직접적으로 작업할 수 있다.
ContinerD는 도커와 별도로 자체 런타임으로 사용될 수 있다.
그뒤로 Docker sim 을 없애고 도커를 지원안 했지만, Docker 가 제거되기전에 만든 이미지들은 OCI 의 이미지스펙을 따랐기때문에 쿠버네티스에서 계속 작동한다. 쿠버네티스에서 지원 런타임으로 제거가 됐다.
-> 회사에서 쓰는 k8s의 런타임은 뭐지???
여기까지가 Docker 의 스토리
-----------
Container D 는 도커의 일부지만 독립된 프로젝트다.
CNCF 의 회원 자격으로 졸업했다!
이제 docker 의 지원없이 containerD 를 자체 설치할 수 있다.
ctr 명령어로 컨테이너 디버깅을 할수 있지만, 사용자 친화적이진 않다.
ctr 명령어는 이미지를 끌어오는 것과 같은 컨테이너 작업을 수행하는데 사용된다.
# 이미지 pull
ctr images pull docker.io/libarary/redis:alpine
# 컨테이너 run
ctr run docker.io/library/redis:alpine redis
하지만, 사용자 친화적이지 않아서, 쓰진 않고, 대신
nerdctl 을 쓴다.
nerdctl : containerd 커뮤니티에서 만들어졌다.
은 docker 와 아주 유사한 명령줄 도구다.
도커가 지원하는 거의 모든 옵션을 지원한다.
또한, 컨태이너D의 최신 기능을 지원한다.
- 암호화된 컨테이너 이미지
- Lazy Pulling
- P2P 이미지 배포
- 이미지 서명 및 확
- 쿠버네티스의 네임스페이스
docker run --name redis:alpine
-> nerdctl run --name redis redis:alpine
docker run --name webserver -p 80:80 -d nginx
-> nerdctl run --name webserver -p 80:80 -d nginx
circtl (크라이컨트롤) 쿠버네티스 관점에서 쿠버네티스 커뮤니티에 의해 만들어졌다.
: k8s와 컨테이너 런타임 상호작용하는데 쓰인다.
별도로 설치돼야하고, 검사와 컨테이너 런타임 디버깅을 위해 사용된다. (컨테이너를 생산하는데는 적합하지않음)
kubelet 과 함께 작동된다.
circtl 로 컨테이너를 만들어봤자 kublet 이 삭제한다. ( kubelet이 모르는 외부에서 만들어진 컨테이너는 삭제하거든..)
이런 이유로, circtl 은 오직! 디버깅과 컨테이너에 접근할때만 써라.
crictl pull redis
crictl images
crictl ps -a
crictl exec -i -t 3easnnawndpuhnawiund12km123n123n12l3ibn<container id> ls
crictl logs 3daskmdawneonwoenawe<container id>
crictl pods
'Kubernetes' 카테고리의 다른 글
Kube Controller Manager (0) | 2023.04.08 |
---|---|
[Watch API] kube-scheduler 가 API server를 모니터링하는 방식 (0) | 2023.04.08 |
Kube API server (0) | 2023.04.08 |
Kubernetes Cluster 구성도 (0) | 2023.04.07 |
쿠버네티스 CKA 시험 정보 (0) | 2023.04.07 |