도커 - 하나의 시스템에서 컨테이너를 하나씩 관리
도커 컴포즈 - 하나의 시스템에서 컨테이너를 여러 개를 묶어서 관리
쿠버네티스 - 여러 대의 시스템에서 여러 컨테이너를 묶어서 관리
쿠버네티스
개념 - 여러 시스템에서 동작하는 여러 개의 컨테이너들을 세트로 관리
구성환경 - 온프레미스 / 클라우드 ( 직접구성 / 관리형 쿠버네티스 )
=> 관리형 쿠버네티스 사용 시
장점은 사용하기 편리, 초기 구성 비용이 없음
단점은 유지비용이 증가, 세부항목에 대한 관리가 어려움
설치 방식
- kops : 클라우드(AWS)에서 쿠버네티스 환경 구성
- kubeadm : 온프레미스 환경에서 쿠버네티스를 구성 (명령어를 사용) => 버전 관리가 어려움
- kubespray : kubeadm + ansible => 각종 플레이북 / 변수파일 / 인벤토리 등을 설정
- docker-desktop : 리눅스컨테이너를 윈도우 등에서 사용할 수 있게 환경을 구성
- minikube : 테스트환경을 구성하기 좋은 간소화된 쿠버네티스 환경 배포 (기본은 원노드)
오브젝트
- 워크로드 : 컨테이너를 관리하는 방식
- 파드 : 컨테이너를 관리하는 최소 단위
하나 이상의 컨테이너로 구성 (목적)
- 컨트롤러 : 파드를 관리 (관리 방식에 따라 여러 종류)
- 레플리카셋 : 복제본의 개수를 관리
- 디플로이먼트 : 레플리카셋의 업데이트 정책 관리
- 데몬셋 : 노드마다 파드를 실행
- 스테이트풀셋 : 상태 저장을 위해 사용
- 잡 : 일회성 작업을 한번 실행
- 크론잡 : 일회성 작업을 반복 실행
- 서비스 : 컨테이너에 대한 네트워크 연결
ClusterIP
NodePort
LoadBalancer
쿠버네티스 클러스터
- control-plane 을 클러스터 구성
1대로도 동작은 가능 (HA 기능 없음)
기본 3대 권장 (HA 기능 제공)
최대 7대 권장
- node (worker) 는 필요에 따라 개수 증가
쿠버네티스 특징
- 선언적 API : 상태를 정의해서 유지
- 커뮤니티가 활발
아키텍쳐
1. Control-plane (master)
kube-apiserver : 각각의 컴포넌트 및 리소스 제어를 위해 접근하는 포인트(전달자)
kube-controller-manager : 각각의 컨트롤러(파드)를 관리/제어
etcd : 쿠버네티스 환경(클러스터) 구성에 필요한 정보들을 저장
kube-scheduler : 컨테이너를 실행할 위치(노드)를 지정
(cloud-controller-manager) : 클라우드 환경에서 컨트롤러 등의 개체를 제어/관리
2. Node (worker)
kube-proxy : 컨테이너의 네트워크 구성
kubelet : 명령어 등을 통해 전달한 내역을 전달받고, 컨테이너를 생성 및 상태유지
container-runtime (docker) : 컨테이너 생성 및 관리
쿠버네티스 명령어
- kubectl 명령어 사용
- 수동으로 설치가 필요할 수 있음 (kubeadm/kubespray 등은 자동설치)
- root사용자(설치를 진행한) 로만 설정
추가 구성
1) 다른사용자에서 명령어 설정
/etc/kubernetest/admin.conf 파일을 ~/.kube/config 파일로 복사 (소유권)
2) 자동완성기능
kubectl completion bash > /etc/bash_completion.d/XXXX (재접속)
- 기본구문
kubectl 동작 대상 이름 옵션
$ kubectl explain 대상 : 대상에 대한 템플릿 설정 방법 확인
$ kubectl api-resources : 사용할 수 있는 리소스 목록 확인
$ kubectl api-versions : 사용할 리소스의 버전 확인
-> kubectl create / apply : 템플릿으로 리소스 배포 (많이사용)
$ kubectl run : 간단하게 파드 배포
$ kubectl expose : 간단하게 서비스 배포
$ kubectl create : 컨트롤러 배포 (템플릿 없이도 가능)
'MLOps > K8S' 카테고리의 다른 글
서비스 (0) | 2022.03.28 |
---|---|
컨트롤러 (Daemonset, Statefulset, Job, CronJob) (0) | 2022.03.28 |
컨트롤러 (ReplicaSet, Deployment) (0) | 2022.03.26 |
파드 관리 (0) | 2022.03.26 |