1. 도커와 쿠버네티스티스의 개요

김하영·2021년 9월 16일
0

'15단계로 배우는 도커와 쿠버네티스' 기반으로 내용 정리하였습니다.

  1. kubectl 커맨트 치트 시트
  • 정보가 응축된 치트 시트를 이용해 전반적인 기능 파악하기

6.1 kubectl 커맨드의 기본

kubectl 커맨드의 기본 구조는 다음과 같이 세 부분으로 구성된다.

(1) 커맨드로 동작을 지정
(2) 리소스 타입과 이름으로 대상이 되는 오브젝트를 지정
(3) 옵션 지정

kubectl 커맨드 인지의 기본 형식

kubectl <(1)커맨드> <(2)리소스타입> [이름][(3)옵션]

커맨드, 리소스타입, 옵션에 대해 각각 표 형식으로 정리했다.
해당 내용을 바탕으로 파라미터를 조합하여 kubectl을 사용하면 된다.

6.2 커맨드

get

: get은 지정한 오브젝트의 목록을 한 줄에 하나씩 출력

  • kubectl get -f <매니페스트 | 디렉터리>
  • kubectl get <리소스_타입>
  • kubectl get <리소스_타입> <이름>
  • kubectl get <리소스_타입> <이름> <옵션>

describe

: describe의 경우 get보다도 자세한 정보 출력

  • kubectl describe -f <매니페스트 | 디렉터리>
  • kubectl describe <리소스_타입>
  • kubectl describe <리소스_타입> <이름>
  • kubectl describe <리소스_타입> <이름> <옵션>

apply

: 매니페스트에 기술된 오브젝트가 존재하지 않으면 생성하고, 존재하면 변경

  • kubectl apply -f <매니페스트>

create

: 매니페스트에 기술된 오브젝트를 생성. 이미 있는 경우에는 에러를 반환

  • kubectl create -f <파일명>

delete

: 매니페스트에 기술된 오브젝트를 삭제

  • kubectl delete -f <파일명>
  • kubectl delete <리소스_타입> <이름>

config

: 접속 대상이 되는 콘텍스트(k8s 클러스터, 네임스페이스, 유저)의 목록을 출력하거나 선택

  • kubectl config get-contexts
  • kubectl config use-context <콘텍스트명>

exec

: 컨테이너에 대화형으로 커맨드를 실행.
파드 내에 컨테이너가 여러 개 있는 경우 [-c]로 컨테이너 명을 지정.
컨테이너명은 'kubectl get describe <파드명>' 으로 확인 가능

  • kubectl exec -it <파드명> [-c 컨테이너명] <커맨드>

run

: 파드를 실행

  • kubectl run <이름> --image=<이미지명>

logs

: 컨테이너의 로그 표시

  • kubectl logs <파드명> [-c 컨테이너명]

6.3 리소스 타입

두 번째 파라미터로 지정할 수 있는 리소스 타입은 매우 다양하다.
'kubectl api-resources'로 얻은 리소스의 목록을 종류별로 그룹화하여 표로 정리하였다.

[ 파드 관련 리소스 타입 ]

pod(po) : 파드

: 컨테이너의 최소 기둥 단위로, 기동 시 파드 네트워크상의 IP 주소를 할당받으며 한 개 이상의 컨테이너를 내포

poddisruptionbudget(pdb) : 파드 정지 허용 수

: 파드의 개수가 지정한 개수 이하가 되지 않도록 디플로이먼트, 스테이트풀셋, 레플리카셋, 레플리케이션 컨트롤러의 동작을 제어

[ 서비스 관련 리소스 타입 ]

service(svc) : 서비스

: 파드를 클라이언트에 공개

replicaset(rs) : 레플리카셋

: 파드의 레플리카 수를 제어하는 컨트롤러로, 디플로이먼트와 연계하여 동작

statefulser(sfs) : 스테이트풀셋

: 퍼시스턴트 데이터를 보유하는 파드를 제어하는 컨트롤러.
퍼시스턴트 볼륨과 파드를 하나씩 쌍으로 묶어 각 이름에 동일한 일련 번호를 부여하여 관리.

job : 잡

: 배치 처리를 수행하는 파드를 관리하는 컨트롤러

cronjob : 크론잡

: 정기적으로 실행되는 배치 처리를 관리하는 컨트롤러

daemonset(ds) : 데몬셋

: 모든 노드에 파드를 배치하는 컨트롤러

replicationcontroller(rc) : 레플리케이션 컨트롤러

: 파드의 레플리카 수를 제어하는 컨트롤러. 레플리카셋의 이전 버전

horizontalpodautoscaler(hpa) : Horizontal Pod Autiscaler

: 워크로드에 따라 파드 수를 조절하는 컨트롤러.

[ 볼륨 관련 리소스 타입 ]

persistentvolume(pv) : 퍼시스턴트 볼륨

: 로우 레벨 스토리지 관리.

persistentvolumeclaim(pvc) : 퍼시스턴트 볼륨 클레임

: 스토리지 클래스와 용량을 지정해서 논리 볼륨의 프로비저닝을 요구.

storageclass(sc) : 스토리지 클래스

: 스토리지의 종류.

[ k8s 클러스터의 구성 관련 리소스 타입 ]

node(no) : 노드

: k8s 클러스터의 워크로드를 실행하는 서버

apiservice : API 서비스

: 마스터가 지원하는 API 서비스를 관리

componentstatuses(cs) : 컴포넌트 상태

: scheduler, controller-manager, etcd-0에 헬스 체크 결과를 보고.

controllerrevision : 컨트롤러 리비전

: 컨트롤러의 리비전 관리.

event : 이벤트

: k8s 클러스터에서 발생한 이벤트를 기록하고 표시하기 위한 컨트롤러.

[ 컨피그맵과 시크릿 관련 리소스 타입 ]

configmap(cm) : 컨피그맵

: 설정 파일을 저장

secret : 시크릿

: 패스워드 등 비밀성이 필요한 정보를 저장

[ 네임스페이스 관련 리소스 타입 ]

namespace(ns) : 네임스페이스

: k8s 클러스터를 논리적으로 분할해서 사용 (pod 가 돌아가는 영역)

[ 역할 기반 액세스 제어(RBAC) 관련 리소스 타입 ]

serviceaccount(sa) : 서비스 어카운트

: 서비스 어카운트는 파드에서 실행되는 프로세스를 위한 어카운트. 접근 권한을 식별하기 위해 사용.

role : 롤

: 일련의 권한을 기술하여 롤을 정의. 롤의 유효범위는 네임스페이스로 한정됨.

rolebinding : 롤바인딩

: 서비스 어카운트와 롤을 바인딩.

clusterrole : 클러스터 롤

: k8s 클러스터 전체에 유효한 롤.

clusterrolebinding : 클러스터 롤 바인딩

: k8s 클러스터 전체에 유효한 클러스터 롤과 서비스 어카운트를 매핑.

[ 보안 관련 리소스 타입 ]

certificatesigningrequest(csr) : 루트 인증서 서명 요구

: 인증 기관에 인증서 서명 요구 작성.

networkpolicies(netpol) : 네트워크 폴리시

: 네임스페이스 사이의 네트워크 접근 제어

podsecuritypolicies(psp) : 파드 시큐리티 폴리시

: 파드 시큐리티 관련 항목의 기본값 설정.

[ 자원 관리 관련 리소스 타입 ]

limitrange(limits) : limit range

: 네임스페이스 내 컨테이너의 CPU와 메모리 요구값과 상한값의 기본값 설정

resourcequota(quota) : resource quota

: 네임스페이스별 CPU와 메모리 요구량, 상한값 설정.

6.4 옵션

옵션 중 기억하면 좋은 유용한 것들이 있다. 자주 사용하는 옵션을 모아봤다.

[ 표시 관련 옵션 예 ]

-n : 네임스페이스명

: 조작 대상을 지정된 네임스페이스로 한정

--all-namespaces -A(v1.14부터)

: 모든 네임스페이스의 오브젝트를 대상으로 함

-o=yaml

: YAML 포맷으로 API 오브젝트를 표시

-o=wide

: 추가 정보 표시(파드의 IP 주소, 배치된 노드 이름등)

-o=json

: JSON 형식으로 API 오브젝트를 표시

-o=custom-columns=<spec.>

: 항목을 지정해서 목록 표시

-o=custom-columns-file=

: 템플릿 파일로 출력할 컬럼을 지정

-o=jsonpath=<template.>

: jsonpath에 일치하는 목록 표시

-o=jsonpath-file=<filename.>

: jsonpath 형식의 템플릿 파일로 출력할 내용 저장

profile
Back-end Developer

0개의 댓글