본문 바로가기
GOORM

GOORM: Kubernetes-41

by hxunz 2022. 1. 5.
  1. Facts 
    : 배운것 - 인그레스 SSL / 무중단 배포 / 레이블 / 애너테이션

  2. Findings
    :
    인그레스 SSL 설정
     - 인그레스로 SSL 인증서를 설정하면 파드 각각에 SSL 설정을 따로 할 필요가 없어 편하다.
     - 시크릿 : 쿠버네티스 내부에서 보안이 필요한 설정들을 다룰 때 사용
     - 파드를 진단하는 두 가지 프로브
    livenessProbe 컨테이너가 정상 실행되는지 진단해서 정상 실행 상태가 아니면 kubelet에서 컨테이너 실행을 중단
    컨테이너의 재시작 정책에 따라 컨테이너를 재시작
    readnessProbe 실제로 컨테이너가 서비스 요청을 처리할 준비가 되었는지 진단
     - 훅 : 파드의 생명 주기
    포스트스타트 훅 파드가 실행된 직후 실행
    프리스톱 훅 파드가 종료되기 직전 실행
    파드에 SIGTERM 신호를 보내기 전 실행되므로 컨테이너와 별개로 그레이스풀 종료와 같은 효과
    대기 시간을 초과하면 프로세스 종료

    레이블
     - 셀렉터와 함께 특정 레이블이 있는 자우너들을 선택할 떄 주로 사용
     - 쿠버네티스 클러스터 안에서 사용자가 오브젝트를 생성할 때 해당 오브젝트를 구분하는 용도
     - 키-값 쌍으로 구성되며 사용자가 클러스터 인에 오브젝트를 만들 때 메타데이터로 설정
     - 레이블 키 : 쿠버네티스 안에서 컨트롤러들이 파드를 관리할 떄 자신이 관리해야할 파드를 구분하는 역할
     - 레이블 셀렉터 : 특정 레이블 선택 시
    등호 기반 셀렉터 같은지 다른지를 구분하는 연산자 사용
    집합 기반 셀렉터 여러 개 값을 조건으로 설정한 다음 해당 키가 있는 레이블 값이 조건에 속하는지 아닌지를 확인

    애너테이션
     - 주석 셩격의 메타 데이터를 기록
     - 레이블 처럼 사용자가 원하는 값을 설정하기 보다 쿠버네티스 시스템에서 필요한 정보들을 표시하는데 사용
     - 키-값 쌍으로 구성하며 레이블처럼 사용자가 설정할수 있다
     - 쿠버네티스 시스템이 필요한 정보들을 담았으며 쿠버네티스 클라이언트나 라이브러리가 자원을 관리하는 데 활용
     - 애너테이션 키 : 쿠버네티스 시스템이 인식할 수 있는 값 사용
     - 인그레스에서 필요한 설정 정의 가능

 

<수업 메모>

 

쿠버네티스 배포 방법
- 온프레미스 : 물리적인 환경에 직접 설치
- 클라우드 : 
	클라우드 환경에 사용자가 직접 배포
	클라우드에서 제공하는 관리형 쿠버네티스 사용

kubeadm : 명령어를 이용하는 설치도구 (버전관리)
kubespray : kubeadm 과 ansible 을 함께 사용하는 방식
kops : 클라우드 환경에서 배포
minikube : 테스트 환경용

가상머신을 통한 배포
- virtualbox / vagrant / kubespray

쿠버네티스 개념 정리
- 컨테이너 : 가상화의 한 종류
	   가상머신에 비해 사이즈/성능/속도 효율이 좋음

- 파드 : 	컨테이너 1개 이상 포함된 개체
	쿠버네티스에서 컨테이너 관리 시 사용하는 최소 단위

- 컨트롤러 : 파드를 관리하는 개체
	복제본의 개수를 관리 -> 레플리카셋 (레플리케이션 컨트롤러)	replicaset (rs)
	레플리카셋을 관리(업데이트정책) -> 디플로이먼트		deployment (deploy)
	각 노드마다 하나씩의 파드를 실행 -> 데몬셋			daemonset (ds)
	일회성 작업을 수행하는 파드를 관리 -> 잡			jobs (jobs)
	일회성 작업을 주기적으로 수행 -> 크론잡			cronjobs(cj)
	상태를 유지하는 방식의 파드 관리 -> 스테이트풀셋		statefulset(sts)

- 네트워크 : 각종 서비스를 통해 네트워크 연결 구성
	ClusterIP : 클러스터 내부에서 접근하는 포인트
	Headless : 로드벨런싱 기능 등이 필요 없을 때 사용하는 방식 (IP 주소를 할당하지 않음)
	NodePort : 외부에서 접근 가능한 서비스 (사용하는 노드의 IP주소 및 포트로 접근)
	LoadBalancer : 외부에서 접근 가능한 서비스 (노드 앞단에 추가적인 장비를 통해 부하분산 기능 제공)
	ExternalName : 내부에서 외부로 접근 시 사용

	Ingress : 외부에서 접근 가능하게 / 부하분산 기능 제공 (L7)
		DNS(이름주소)로 접근
        
클러스터 구조 (아키텍쳐)
- 컨트롤 플레인 ( 마스터 )
- 노드 (워커)

레이블 : 객체에 대해 이름을 부여
관리 대상 - 레이블
관리자 - 셀렉터

용도
1. 컨트롤러로 파드를 관리
2. 서비스와 파드를 연결
3. 노드에 배치


애너테이션 : 주석 , 특정 오브젝트에 한정 특성을 정의

** nginx 이미지로 실습 가능
1. 레플리카셋의 복제본 관리 확인 실습
	1) 레이블을 설정해서 (app=web) 3개의 복제본을 관리하는 레플리카셋을 만든다.
	2) 만들어진 파드 중 하나를 수동으로 제거하고 확인한다.
	3) YAML 파일을 작성해서 새로운 파드를 생성한다. (레이블을 동일하게 설정)
	4) 새로운 파드를 만든 뒤 파드 목록을 확인한다. (레이블까지)
	5) 새로 만든 파드의 레이블을 변경하고 다시 확인해본다.
	6) 레플리카셋을 삭제한다.

2. 디플로이먼트 배포전략 및 롤아웃 확인
	1) 디플로이먼트를 배포전략 설정 없이 배포한다. (기본값)
	2) set image 명령어로 nginx:1.18 로 이미지를 변경하고 확인해본다. 
	(터미널 2개로 한쪽에서는 watch 명령어로 미리 파드 상태 출력하면서 실행)
	3) 1.17 버전으로 변경하면서 --record 옵션으로 기록해본다.
	4) 변경 기록들을 확인해보고 초기 상태로 되돌아가본다.
	
	5) 타입을 recreate 로 변경하고 2번 작업을 똑같이 수행해본다.

3. 서비스 연결 확인
	1) nginx로 디플로이먼트 생성 후 클러스터 내부에서만 접근 가능하게 연결해보기
	2) 노드의 30080 포트로 접속할 수 있게 서비스 연결
	3) 외부 IP 가 할당되도록 연결설정 해보기
	4) 192.168.56.21.xip.io 로 접속할 수 있게 설정해보기.

 

'GOORM' 카테고리의 다른 글

GOORM: Kubernetes-43  (0) 2022.01.05
GOORM: Kubernetes-42  (0) 2022.01.05
GOORM: Kubernetes-40  (0) 2022.01.04
GOORM: Kubernetes-39  (0) 2022.01.04
GOORM: Kubernetes-38  (0) 2022.01.04

댓글