백엔드 개발자 블로그

Core Concept 본문

CI CD/K8S

Core Concept

backend-dev 2023. 8. 22. 08:32

2.1. Pod

  • 역할
    • 앱의 단일 인스턴스
  • 생성 방법
    • 설정파일(yaml) 작성 후 생성하기
      1. 설정파일(yaml) 작성`apiVersion: v1``kind: Pod``meetadata:`` ``name: {Pod이름}`` ``labels:`` ``app: {앱이름}`` ``type: {앱타입}` `spec:`` ``containers:`` ``- name: {컨테이너이름}`` ``image: {이미지이름}``:wq!`
      2. `vi {파일이름}.yaml`
      3. 설정파일을 토대로 Pod 생성
      4. `kubectl create -f {파일이름}.yaml`
    • 명령어로 간단하게 생성 및 설정하기
      • 바로 Pod 생성하기
      • `kubectl run {Pod이름} --image={image이름}`
      • 설정파일 작성 후 Pod 생성
      • `kubectl run nginx --image=nginx --dry-run=client -o yaml > {파일이름}.yaml``kubectl create -f {파일이름}.yaml`
  • 조회 방법`kubectl get pods`
  • 존재하는 pod, pod 상태, pod이름 확인 가능
  • 상세 조회 방법`kubectl describe pod {pod이름}`
  • 어떤 image로 생성 됐는지, 컨테이너 상태, 에러 원인 확인 가능
  • 삭제 방법
  • `kubectl delete pod {pod이름}`
  • 수정 방법
    1. 설정 파일 수정하기
    2. `vi {파일이름}.yaml`
    3. 수정사항 적용하기
    4. `kubectl apply -f {파일이름}.yaml`
    5. 적용 됐는지 확인하기
    6. `kubectl get pods`

2.2. ReplicaSet

  • 역할
    • 고가용성 : 응용어플리케이션이 항상 실행되도록 하기 위해 포드를 복사함
    • 로드 밸런싱 : 서로 다른 노드의 여러 포드에 걸쳐 부하 분산
  • 생성 방법
    1. 설정 파일 작성`apiVersion: apps/v1``kind: ReplicaSet``metadata: ` `spec:`` ``template:`` ``{apiVersion,kind를 제외한 pod 설정 파일 내용}`` ``replicas: {복제갯수}`` ``selector:`` ``{Pod metadata 하위 key-value 넣기}`
    2. `vi {파일이름}.yaml`
    3. 설정 파일 토대로 Replica Set 생성
    4. `kubectl create -f {파일이름}.yaml`
  • 조회 방법
  • `kubectl get rs`
  • 상세 조회 방법
  • `kubectl describe rs {ReplicaSet이름}`
  • 삭제 방법
  • `kubectl delete rs {ReplicaSet이름}`
  • 수정 방법
    1. 설정 파일 수정
    2. `kubectl edit rs {rs이름}` `OR` `vi {파일이름}.yaml`
    3. 수정 적용하기
    4. `kubectl replace -f {파일이름}.yaml`
    5. 확인하기
    6. `kubectl get rs`
    7. 생성이 안됐으면 기존 pod 삭제
    8. `kubectl delete pod {pod이름}`

2.3. Deployment

  • 역할
  • 애플리케이션의 배포와 관리(버전 업데이트, 롤백, 스케일링)를 담당
  • 생성 방법
    • yaml 파일 작성 후 Deployment 생성
      1. 설정파일 작성
      2. `apiVersion: apps/v1``kind: Deployment``metadata: ` `spec:`` ``template:`` ``{apiVersion,kind를 제외한 pod 설정 파일 내용}`` ``replicas: {복제갯수}`` ``selector:`` ``{Pod metadata 하위 key-value 넣기}`
      3. 설정 파일 토대로 Deployment 생성
      4. `kubectl create -f {파일이름}.yaml`
    • 명령어로 간단히 생성
      • 바로 생성하기
      • `kubectl create deployment --image=nginx nginx`
      • yaml 파일 작성 후 생성하기
      • `kubectl create deployment --image=nginx nginx --dry-run=client -o yaml > nginx-deployment.yaml``kubectl create -f nginx-deployment.yaml`

2.4. Service

  • 역할
    • 애플리케이션 안팎의 다양한 구성 요소간의 통신을 가능하게 함
  • 종류
    • NodePort
      • 역할
        • 노드의 포트와 내부 포트 매핑 + 내부 포트와 Pod IP 매핑
        • ssh로 Node 접속한 뒤 내부 Pod로 접속할 필요 없이 바로 Node에 접속하면 애플리케이션 실행 됨
      • 생성 방법
    • ClusterIP
      • 역할
        • ssh로 Node 접속한 뒤 내부 Pod로 접속할 필요 없이 바로 Node에 접속하면 애플리케이션 실행 됨
        • 중간다리 역할을 해서 Pod를 변경해도 서비스 간 통신에 영향을 안 미치게 됨
      • 생성 방법
    • LoadBalancer
      • 역할
        • 사용자에게 단일 IP를 제공 + 알아서 부하 분산
      • 생성 방법
  • 조회 방법
  • `kubectl get services`
  • 상세 조회 방법
  • `kubectl describe service {service이름}`
  • 수정 방법
    1. yaml 파일 수정
    2. 수정 적용
  • 삭제 방법
  • `kubectl delete service {service이름}`

2.5. Namespace

  • 역할
    • 오브젝트를 논리적으로 구분하여 그룹핑 함
  • 생성 방법
  • 옵션
  • Resource Quota
  • 조회 방법
  • 상세 조회 방법

'CI CD > K8S' 카테고리의 다른 글

Cluster Component  (1) 2023.08.22