- Facts
: 배운것 - 인그레스 SSL / 무중단 배포 / 레이블 / 애너테이션 - 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 |
댓글