본문 바로가기
Tech

k8s 공부 (진행중)

by ohrohi 2024. 12. 10.
반응형

▶kubectl 명령어 활용

  • kubectl 이란?
    kubenets에게 원하는 작업을 요청할때 쓰는 명령어

    명령어 형식: kubectl [command] [type] [name] [flags]
    [command] - 자원에 실행할 명령(create, get, delete, edit..)
    [type] - 자원의 타입 (node, pod, service...)
    [name] - 자원의 이름
    [flags] - 부가적으로 설정할 옵션 (--help, -o options, dry-run...)

  • pod 생성 
    kubectl run [name] --image=[이미지] --port [사용할 데몬포트] - 컨테이너 pod 만드는 명령어
    kubectl create deployment mainui --image=httpd --reflicas=3 - pods를 여려개 만들때 사용

  • 포트 포워딩
    kubectl port-forward webserver 80:80 - 포트포워딩 해주는 명령어 
    80: - 로컬의 포트
    :80 - pod의 포트

pod 삭제
kubectl delete pod [pod명]


▶컴포넌트 개념

  • 마스터 (control plane) 컴포넌트
    - etcd
      - key-value 타입의 저장소
    - kube-apiserver
      - k8s API를 사용하도록 요청을 받고 요청이 유효한지 검사
    - kube-schduler
      - 파드를 실행할 노드 선택
    - kube-controller-manager
      - 파드를 관찰하며 파드의 개수를 보장
     
  • 워커 노드 컴포넌트
    - kubelet
      - 모든 노드에서 실행되는 k8s 에이전트
      - 데몬 형태로 동작
    - kube-proxy
      - k8s의 network 동작을 관리
      - iptables rule을 구성
    - 컨테이너 런타임
      - 컨테이너를 실행하는 엔진
      - docker, containerd, runc

▶  Namespace
- 클러스터 하나를 여러 개의 논리적 단위로 사용

  • 네임스페이스 생성
kubectl create namespace

 

  • 네임스페이스 삭제
kubectl delete namespace [namespace명]
  • namespace siwtch 하기 (default에서 다른거로 바꾸기) - Base namespace 바꾸기
    기본으로 사용하는 namespace를 default가 아닌 다른 이름의 namespace로 switch

    1. namespace를 포함한 context 등록
# kubectl config --help
# kubectl config set-context NAME --cluste=kubernetes... --user=...
- 새로 등록할 context를 등록해준다
# kubectl config view



2. 등록된 namespace로 context 변경

# kubectl config user-context NAME
- 새로 등록한 context의 namespace가 기본 namespace로 사용된다.

 

 

▶ yaml 템플릿

  • scalar  문법 = ':'을 기준으로 key: value를 설정
  • 배열 문법 = '-' 문자로 여러 개를 나열
  • 들여쓰기 할땐 Tab이 아닌 Space bar 사용

▶ API

  • kubernetes의 object 정의 시 apiversion이 필요
  • kubernetes가 update하는 api가 있으면 새로운 api가 생성됨
  • API Object의 종류 및 버전
NAME Version
Deployment  apps/v1
Pod          v1
ReplicaSet  apps/v1
replicationController  v1
service  v1
PersistentVolume  v1
# kubectl explain pod 
- pod의 api 버전 확인 가능
# kubectl api-resources 
- api 버전 지원하는지 확인 가능

 

 

▶Pod 란?

  • 컨테이너를 표현하는 k8s API의 최소단위
    (Control Plane의 API에서 컨테이너를 실행은 불가)
  • pod에는 하나 또는 여러개의 컨테이너가 포함될 수 있음
반응형