Develop/infra

Kubernetes 개념

kudl 2020. 11. 24. 13:28

리소스 정의

리소스 용도
노드 컨터이너가 배치되는 서버
네임스페이스 쿠버네티스 클러스터 안의 가상 클러스터
파드 컨테이너의 집합 중 가작 작은 단위. 컨테이너의 실행 방법 정의
레플리카셋 같은 스펙을 갖는 팟을 여러개 생성하고 관리하는 역할
디프로이먼트 레플리카 셋의 리비전 관리
서비스 팟의 집합에 접근하기 위한 경로 정의
인그레스 서비스를 쿠버네이스의 클러스터 외부로 노출
컨피그맵 설정 정보를 정의하고 팟에 전달
퍼시스턴트볼륨 팟에서 사용할 스토리지의 크기 및 종류
퍼시스턴트볼륨클레임 퍼시스턴트 볼륨을 동적으로 확보
스토리지클래스 퍼시스턴트 볼륨이 확보하는 스토리지 종류를 정의
스테이트풀셋 같은 스펙으로 모두 동일한 팟을 여러개 생성하고 관리
상주 실행을 목적으로 하지 않는 팟을 여러개 생성하고 정상적인 종료를 보장
크론잡 크론 문법으로 스케쥴링 되는 잡
시크릿 인증 정보 같은 기밀 데이터 정의
네임스페이스 안에서 조작 가능한 쿠버네티스 리소스의 규칙을 정의
롤바인딩 쿠버네티스 리소스 사용자와 롤을 연결 짓는다
크러스터롤 클러스터 정체적으로 조작 가능한 리소스 규칙을 정의
클러스터롤바인딩 쿠버네티스 리소스 사용자와 클러스터롤을 연결 
서비스계정 팟이 쿠버네티스 리소스를 조작할때 사용하는 계정

컴포넌트 정의

컴포넌트명 역할
kube-apiserver 쿠버네티스 API를 노출하는 컴포넌트 kubectl로부터 리소스를 조작하라는 지시를 받는다
etcd 고가용성을 갖춘 분산 키-값 스토어. 클러스터의 백킹 스토어로 사용
kube-scheduler 노드를 모니터링하고 컨테이너를 배치할 적절한 노드를 선택
kube-controller-manager 리소스를 제어하는 컨트롤러를 실행

명령어 모음

명령어 실행
배포 kubectl apply -f {매니페스트 파일(yaml)}
조회 kubectl get {pod, service, deployment, job}
kubectl get {pod, service, deployment, job} -A
kubectl get {pod, service, deployment, job} -w
컨테이너 접근 kubectl exec -it {pod name} -- /bin/bash
kubectl exec -it {pod name} sh
kubectl exec -it {pod name} sh -c {컨테이너명}
로그확인 kubectl logs -f {pod name}
삭제 kubectl delete pod {pod name}
kubectl delete -f {매니페스트 파일(yaml)}
kubectl delete -l app={app name}
배포상태확인 kubectl describe pod {pod name}
배포 히스토리 조회 kubectl rollout history deployment {pod name}
롤백실행하기 kubectl rollout history deployment {pod name} --revision=1
config 명령어들 kubectl config [options]

current-context 현재-컨텍스트를 표시
delete-cluster  kubeconfig에서 지정된 클러스터를 삭제
delete-context  kubeconfig에서 지정된 컨텍스트를 삭제
get-clusters    kubeconfig에 정의된 클러스터를 표시
get-contexts    하나 또는 여러 컨텍스트를 설명
rename-context  Renames a context from the kubeconfig file.
set             kubeconfig 파일에서 단일값을 설정
set-cluster     kubeconfig에서 클러스터 항목을 설정
set-context     kubeconfig에서 컨텍스트 항목을 설정
set-credentials kubeconfig에서 사용자 항목을 설정
unset           kubeconfig 파일에서 단일값 설정을 해제
use-context     kubeconfig 파일에서 현재-컨텍스트를 설정
view            병합된 kubeconfig 설정 또는 지정된 kubeconfig 파일을 표시
   

RBAC(Role-based access control)

명칭 내용
일반 사용자 클러스터 외부에서 쿠버네티스를 조작하는 사용자
서비스 계정 쿠버네티스 내부적으로 관리되며 쿠버네티스 API를 다룰때 사용하는 사용자
리소스 내용
각 쿠버네티스 API 사용 권한을 정의. 지정된 네임스페이스 안에서만 유효
롤바인딩 일반 사용자 및 그룹/서비스 계정과 룰을 연결
클러스터롤 각 쿠버네티스 API의 사용 권한을 정의
클러스터롤바인딩 일반 사용자 및 그룹/서비스 계정과 클러스터를 연결