개발 관련 일지/k8s

그림으로 배우는 쿠버네티스 CH2 쿠버네티스를 배우기 위한 사전 준비 작업

worldi 2024. 2. 4. 19:18

실습 버전 업그레이드

실습 버전을 1.2로 업시킨다.

https://user-images.githubusercontent.com/52024566/156181043-6cdcf0af-7aaa-442d-b7a8-42c476fd442f.png

혼동되는 용어 정리

  • 파드
  • 컨테이너
  • 애플리케이션

가 혼동되어 쓰인다.

 

파드나 컨테이너는 구조적인 단위, 구조, 형태에 대한 단위라고 한다면, 애플리케이션은 기능의 단위라고 할 수 있다.

즉 애플리케이션은 단일 컨테이너의 단위가 될 수도 있고, 복수의 컨테이너가 될 수도 있다. 또한 파드와 1 대1 맵핑될 수도 있고, 파드가 여러 개 모여서 동작하는 애플리케이션도 동작할 수 있다.

  • 파드(Pod) : 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 최소 컴퓨팅 단위
  • 컨테이너(Container) : 격리된 환경에서 실행되는 프로세스
  • 애플리케이션(Application) : 구조의 단위인 파드, 컨테이너와 달리 실제로 동작하는 기능의 단위

자주 쓰이는 kubectl 옵션 명령어

  • get: 오브젝트 조회
  • run, create, apply: 오브젝트 생성
  • delete: 오브젝트 삭제
  • exec: 파드 내부에 컨테이너로 접속
  • scale: 파드 갯수를 늘리거나 줄임
  • edit: 배포된 오브젝트를 수정
  • -o yaml: 코드를 확인하는 명령어
  • -dry-run=client: 코드를 생성하는 명령어
  • events: 쿠버네티스 이벤트 확인
  • describe: 배포된 오브젝트의 상태를 파악
  • logs: 컨테이너의 로그 확인
k run nginx --image=nginx
k create deploy nginx --image=nginx
k scale deployment nginx --replicas=3
k get po
k delete pod nginx-...
k apply -f ~/_~.yml

k exec apy-nginx-... -it -- /bin/bash // 터미널을 배쉬에 잡아서 파드에 들어가기
k edit deploy apy-nginx // 개수를 1개 줄일 수 있다. 
k delete deployments.apps nginx

 

 

코드 관련 명령어

1. yaml 형식으로 보여준다.

kubectl get pod nginx -o yaml

 

2. 코드 생성 명령어

  • —dry-run=client : 실행은 해보는데 실제로 적용이 안될 거야. 코드에 이상이 없는지 돌려 보는 확인 용도
kubectl run nginx --image=nginx  --dry-run=client -o yaml
  • 더 나아가 저장 kubectl run nginx --image=nginx --dry-run=client -o yalm > po-nginx.yaml
  • k apply -f po-nginx.yml 로 실행할 수 있다.
  • 파드 말고 deployment 로 실행되는 것을 작성하고 싶다면,
k create deploy nginx —image=nginx -o yaml —dry-run=client > deploy-nginx.yaml

 

3. -o yaml는 주로 파드 정보 보지 않고 인그레스 같은 거 볼 때 사용한다.

쿠버네티스 이벤트 확인 (events)

  • kubectl get events : default 네임스페이스에 해당하는 이벤트들만 보인다.
  • kubectl get events -n kube-system : 쿠버시스템 네임스페이스의 이벤트 들이 보인다.

배포된 오브젝트의 상태를 파악 (describe)

  • kubectl describe pod nginx
  • 오브젝트에 연관된 모든 내용이 표시가 된다.
  • 하지만 pod 라고 생각되는 부분 안에 있는 컨테이너도 로그가 있는데, 그 부분은 describe 로 표시되지 않는다.

컨테이너의 로그 확인 (logs)

  • kubectl logs nginx : 컨테이너의 로그를 확인 할 수 있다.
  • 컨테이너의 이미지를 만들고 로드되는 상태에서 의도치 않게 문제가 생길 때 표시된다.

 

💡 정리하자면, 이벤트는 네임스페이스 단위로 크게 보기 위해서 사용. 오브젝트에 관계되어 있는 이벤트, 에러 확인하기 위해서 많이 쓰이는 명령어는 describe 그리고 pod의 컨테이너에 자세하고 세부적인 내용은 확인하고 싶을때 , 비정상적인 동작 확인하고 싶을 때 log를 쓴다.