Developing

패스트캠퍼스 캐시백 챌린지 59일차 본문

Devops/Fastcampus 캐시백 챌린지

패스트캠퍼스 캐시백 챌린지 59일차

DEV_BLOG 2022. 6. 15. 21:41

수강 인증샷

 

Kubectl 명령형(Imperative), 선언형(Declarative) 명령형과 Pod에 관한 클립들을 수강하는식으로 챌린지를 진행하였다. Kubernetes는 경험이 전무하다보니 아직은 낯설지만 명령어들에 조금씩 익숙해지고있다. Pod부분의 개념이 아직까지는 어렵게 느껴지는듯하다..;; 다음 포스팅으로는 ReplicaSet과 관련된 내용을 포스팅 할 예정이다.

 

 

Kubectl 사용

 

명령형(Imperative)

  • 수행하고자 하는 액션을 지시
  • 적은 리소스에 대해서 빠르게 처리 가능
  • 여러 명령어를 알아야 함

 

선언형(Declarative)

  • 도달하고자 하는 상태(Desired State)를 선언
  • 코드로 관리 가능 → GitOps 활용 가능

⇒ 변경사항에 대한 감사(Audit) 용이

⇒ 코드리뷰를 통한 협업

  • 멱등성 보장(apply)
  • 많은 리소스에 대해서도 매니페스트 관리 방법에 따라 빠르게 처리 가능
  • 알아야 할 명령어 수가 적음

 

실습링크는 하단의 링크에 해당한다.

https://github.com/tedilabs/fastcampus-devops/tree/main/3-docker-kubernetes/5-k8s-start

 

kubectl 명령형 명령어

# ubuntu:focal 이미지로 ubuntu 파드 생성 bash 명령어)
$ kubectl run -i -t ubuntu --image ubuntu:focal bash

# grafana Deployment 오브젝트에 대해 NodePort 타입의 Service 오브젝트 생성 (노드에 포트 개방)
$ kubectl expose deployment grafana --type=NodePort --port=80 --target-port=3000

# frontend Deployment의 www 컨테이너 이미지를 image:v2로 변경
$ kubectl set image deployment/frontend www=image:v2

# frontend Deployment를 리비전 2로 롤백
$ kubectl rollout undo deployment/frontent --to-revision=2

 

kubectl 선언형 명령어

# deployment.yaml에 정의된 쿠버네티스 오브젝트 클러스터에 반영
$ kubectl apply -f deployment.yaml

# deployment.yaml에 정의된 쿠버네티스 오브젝트 제거
$ kubectl delete -f deployment.yaml

# 현재 디렉토리의 kustomization.yaml 파일을 쿠버네티스 오브젝트 클러스터에 반영
$ kubectl apply -k ./

⇒ 추천하는 방향

CRUD 같은 operation : 선언형 방식

ssh접속,log,port foward : 명령형 방식

 

API 리소스 - Pod

 

파드(Pod)

  • 쿠버네티스가 컨테이너를 다루는 기본 단위
  • 1개 이상의 컨테이너로 구성된 컨테이너 집합
  • 동일 파드 내 컨테이너는 여러 리눅스 네임스페이스를 공유 ⇒ 네트워크 네임스페이스 공유 (동일 IP 사용)
  • 사용자가 파드를 직접 관리하는 경우는 거의 없음

 

파드 관련 kubectl 명령어

# 파드 목록 확인
$ kubectl get nod

# 특정 파드 상태 확인
$ kubectl describe pod hello

# 특정 파드에 명령어 전달
$ kubectl exec -i -t hello bash

# 특정 파드 로그 확인
$ kubectl logs pod/hello

 

멀티 컨테이너 파드와 사이드카 패턴

  • 동일 파드 내 컨테이너는 모두 같은 노드에서 실행 (네임스페이스를 공유하기 때문)
  • 사이드카 패턴(Side-car Pattern)

⇒ 메인 컨테이너를 보조하는 컨테이너와 같이 실행하는 구조

⇒ 주요 유즈 케이스

    - Filebeat와 같은 로그 에이전트로 파드 로그 수집

    - Envoy와 같은 프록시 서버로 서비스메시 구성

    - Vault Agent와 같은 기밀 데이터 전달 목적

    - Nginx의 설정 리로드 역할 에이전트 구성

 

 

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

* 본 포스팅은 패스트캠퍼스 환급 챌린지를 위해 작성되었습니다.