커맨드 | 동작 |
kubectl cluster-info | K8s 클러스터의 엔드포인트를 표시 |
kubectl get no | K8s 클러스터를 구성하는 노드 목록 표시 |
kubectl run | 파드 실행 |
kubectl get po | 파드 목록 출력 |
kubectl delete po | 파드 이름 지정 후, 삭제 |
kubectl get all | 모든 오브젝트 출력 |
kubectl logs | 컨테이너 프로세스가 STDOUT / STDERR로 출력하는 로그를 표시 - 파드를 지우면 로그를 출력할 수 없다 |
kubectl get deploy,po | 디플로이먼트와 파드 목록 표시 |
kubectl get deploy | 디플로이먼트 목록 표시 |
kubectl delete deploy | 디플로이먼트 및 관련 파드 일괄 삭제 |
kubectl get jobs | 잡의 실행 상태를 출력 |
kubectl create job | 잡 컨트롤러 제어하에서 파드를 실행 |
kubectl create deployment | 디플로이먼트 컨트롤러 제어하에서 파드를 실행 |
kubecetl scale | ㅇ레플리카 수 변경 |
kubectl create -f 파일명 | 파일에 기술된 오브젝트 생성 |
kubectl delete -f 파일명 | 파일에 기술된 오브젝트 삭제 |
kubectl apply -f 파일명 | 파일에 기술된 오븍제트가 있으면 변경, 없다면 생성 |
- 파드를 관리하는 여러 컨트롤러가 있으며, 워크로드에 맞게 선택해야 한다.
* 디플로이먼트 : 웹 서버/API 서버처럼 지속적 서비스 제공
* 잡 컨트롤러 : 배치 처리와 같은 워크로드에 적합
- 커맨드 예시
kubectl run hello-wordld --image=hello-world -it --restart=Never
(1) (2) (3) (4) (5) (6)
(1) k8s 커맨드
(2) 서브 커맨드
(3) K8s 오브젝트 이름 (파드 / 컨트롤러)
(4) 컨테이너의 이미지
(5) -i : 키보드를 표준 입력에 연결 / -t: 유사 터미널과 연결하여 대화 모드 설정
(6) --restart : 파드의 기동 방법 변경
- Always : 기본값, 파드를 디플로이먼트의 제어 하에 실행. 백그라운드에서 실행
- Never : 파드만을 독립적으로 실행
- OnFailure : 잡에 의한 파드 실행. 비정상 종료 시 재시작 / 지정한 횟수만큼 실행
매니페스트?
K8s의 오브젝트를 생서하기 위한 메타 정보를 YAML / JSON으로 기술한 파일
YAML 예시 : JSON 보다 간결하고 가독성이 좋아서 더 많이 쓰인다.
apiVersion: v1
kind: Pod
metadata:
name: webapl
spec:
containers:
- name: webapl
image: maho/webapl:0.1 # (1)핸드러를 구현한 애플리케이션
livenessProbe: # (2)애플리케이션이 살아있는지 확인
httpGet:
path: /healthz # 확인 경로
port: 3000
initialDelaySeconds: 3 # 검사 개시 대기 시간
periodSeconds: 5 # 검사 간격
readinessProbe: # (3) 애플리케이션이 준비되었는지 확인
httpGet:
path: /ready # 확인 경로
port: 3000
initialDelaySeconds: 15
periodSeconds: 6
쿠버네티스 API
쿠버네티스 API를 사용하면 쿠버네티스 오브젝트들의 상태를 쿼리하고 조작할 수 있다. 쿠버네티스 컨트롤 플레인의 핵심은 API 서버와 그것이 노출하는 HTTP API이다. 사용자와 클러스터의 다른
kubernetes.io
PodSpec
containers | 컨테이너 |
initContainers | 초기화 전용 컨테이너 |
nodeSelector | 파드가 배포될 노드의 레이블 지정 |
volumes | 파드 내 컨테이너 간 공유할 수 있는 볼륨 지정 |
Container config
image | 이미지의 리포지터리명과 태그 |
name | 컨테이너 여러개 기술할 경우 "필수" 항목 |
livenessProbe | 컨테이너 어플리케이션이 정상 동작하는지 검사하는 프로브 검사에 실패하면 파드 상의 컨테이너를 강제 종료 후 재시작 |
readinessProbe | 컨테이너 어플리케이션이 사용자의 요청을 받을 준비가 되었는지 검사하는 프로브 검사에 실패하면 서비스에 의한 요청 트래픽 전송을 중지 |
ports | 외부로부터 요청을 전달받기 위한 포트 목록 |
resources | CPU와 메모리 요구량과 상한치 |
volumeMounts | 파드에 정의한 볼륨을 컨테이너의 파일 시스템에 마운트하는 설정. 복수 可 |
command | 컨테이너 기동 시 실행할 커맨드. args가 인자로 적용 |
args | command 의 실해 인자 |
env | 컨테이너 내의 환경 변수 설정 |
헬스체크 : 프로브 대응 핸들러의 종류와 설명
exec | 컨테이너 내 커맨드를 실행. Exit 코드 0, 종료 시 성공 |
tcpSocket | 지정한 TCP 포트번호로 연결할 수 있다면 성공 |
httpGet | HTTP GET 요청이 정기적으로 실행되며, HTTP 상태 코드가 200 이상 400 미만이면 성공 |
- 노드의 하드웨어 장애 시, kubelet도 정지되기에 노드의 장애 대책을 헬스 체크(프로브)가 아닌 컨트롤러를 사용해야 한다.
'서버' 카테고리의 다른 글
Kubernetes : Service (0) | 2022.08.22 |
---|---|
Kubernetes : Deployment (0) | 2022.08.15 |