Kubernetes 학습

Keyword

  1. Node?: 컴퓨팅 자원
  2. Pod?: 쿠버네티스 에서의 최소한의 배포 단위
  3. Container?: 어플리케이션 배포가 가능한 최소 단위

MiniKube

  1. 쿠버네티스 학습 도구
  2. 가상 컴퓨팅 환경을 구축해 클러스터로써 동작하게 해줌 → 테스트 용이!

Command

  1. minikube Command
    1. start : 가상머신 시작
      1. —driver=docker : 도커로 시작
      2. p name : 이름 지정 가능
    2. profile : 현재 사용중인 프로 파일 출력
      1. minikube profile name : 프로 파일 이름 변경
    3. profile list : 프로파일 리스트 출력
    4. delete : 현재 사용중인 profile의 가상머신 제거

Kubectl

  1. 쿠버네티스 CLI

Command

스크린샷 2023-10-30 오후 3.55.42.png

  1. kubectl Command
    1. apply : 원하는 상태 적용
      1. f : 파일 → kubectl -f [파일명 or URL]
    2. get : 리소스 목록 출력 → 여러개 조회도 가능 pod,service,svc
      1. kubectl get type/resource -o : 아웃풋 출력 변경 [yaml, wide, json]
      2. kubectl get type/resource —show-labels: 설정한 라벨 태깅 조회
      3. get pod : 팟 조회 [pod or po or pods 가능]
      4. get replicaset : 레플리카 서비스 조회 [replicaset, rs 가능]
      5. get service : 서비스 조회 [service or svc 가능]
      6. get job : 작업 현황 조회
      7. get deployment : 배포 현황 조회 [deployment, deploy 가능]
      8. get endpoint : 서비스의 접속 정보 [endpoint, ep 가능]
    3. describe : 리소스 상태 출력
      1. kubectl describe type/name : 상세 상태 보기
    4. delete : 리소스 제거
      1. kubectl delete type/name : 리소스 제거
    5. logs : 컨테이너 로그 확인
      1. kubectl logs name : 로그 확인
    6. exec : 컨테이너에 명령 전달 & 실행
      1. kubectl exec -it name — command : 컨테이너 명령어 전달
        1. 컨테이너 접속시 : kubectl exec -it 이름 – bash
        2. c : 여러개의 컨테이너가 있는경우 지정 하는 옵션
    7. config : kubectl 설정 관리
      1. current-context : 현재 컨텍스트 확인
      2. use-context : 컨텍스트 설정
    8. api-resources : 전체 오브젝트 종류 확인
    9. explain obj : 특정 오브젝트 설명 보기
    10. rollout : 한개 또는 여러개의 리소스 관리 [deployments, daemonsets, statusfulsets 타입들 가능]
      1. rollout history name : 변경 내역 확인
      2. rollout undo name : 바로 전으로 롤백
      3. rollout pause name : 업데이트 중지
      4. rollout resume : 업데이트 재개
    11. get

Spec = 설정 파일 작성

  1. yaml 로 작성 가능

    1. refs:

    Kubernetes API Reference Docs

    1. version : 오브젝트 버전 [v1, app/v1, …]
    2. kind : 배포 종류 [Pod, Deployment, ReplicaSet, Service]
    3. metadata : 메타데이터 [name, label, Annotation으로 구성]
    4. spec : 상세 명세 [리소스 마다 다름]
      1. containers: 1-Pod, 1-container가 일반적이나 여러개의 컨테이너도 가능하며 흔한 편 서로 네트워크와 동일한 디렉터리 공유 가능
      2. 옵션
        • name: 앱 이름
        • image: 이미지 경로
        • env: 설정값, - name과 value를 별도로 정의 해야 함
          • name: REDIS_HOST
          • value: “localhost”
        • livenessProbe: 컨테이너가 정상적으로 동작하는지 체크 후 이상하면 재시작
        • readinessProbe: 컨테이너 준비되었는지 체크 후 준비 되지 않았다면 Pod로 요청하는 요청 제외
    5. 위 4종류는 필수로 정의 해야 함

Pod