inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[ 인프런 워밍업 클럽 4기 Devops ] 2 주 차 발자국 (13일의 금요일 -안상민)

안상민
1

강의 수강 내용

- Application 기능으로 k8s 이해 - Probe

- Application 기능으로 k8s 이해 - Configmap, Secret

- 무게감 있게 쿠버네티스 설치

- Application 기능으로 k8s 이해 - PV/PVC, Deployment, Service, HPA

금 - Component 동작으로 k8s 이해

 

강의

 

칭찬하고 싶은 점

바빴지만 이번 주도 마감 전에 복습과 발자국 완성을 지킨 점을 칭찬하고 싶습니다.

 

아쉬웠던 점

이번 주는 평일에 일정이 많고 약속도 많아서 분주했습니다.
수업을 들을 때가 밤늦게가 되어 시작하게 되어서 집중이 잘 안됐던 것 같습니다.
연휴가 있어 미션도 미리 해둘 수 있었는데, 조금 게으름을 피우느라 늦어졌던 점이 아쉽네요.

 

보안해야 될 점

저번 주에 그날그날 복습해서 블로깅하는 것을 보완할 점으로 적었는데, 잘 지켜지지 않았습니다.
다음 주는 좀 피곤하더라도 꼭 지켜보려고 합니다!

 

회고

 

개인적으로 이번주는 시간이 많지 않아 수업영상만 보고 실습을 별도로 하지 못한 채 학습이 진행되었습니다. 감안 해주셔서 읽어 주시면 감사하겠습니다.

 

※ 배운 내용 정리

 

이번주 시작하고 3일 동안의 강의는 k8s 클러스터 환경에 있는 서비스 되고 있는 서버에서의 각 오브젝트들의 역할을 기준으로 설명해주셨습니다.

각 오브젝트들을 기업측면에서 본다면 개발자 / 운영자 / 인프라 별로 어떻게 사용하고, 어떻게 활용 할 수 있을지 고민을 할 수 있었습니다.

취업을 하게 되어 협업을 하게 된다면 소통이 필요한 부분들을 미리 그려볼수 있어서 좋았습니다.

 

Application 기능으로 이해하기 - Probe

 

Probe는 최종적으로는 에플리케이션이 정상적으로 클라이언트에게 서비스되고 서비스 되기 전까지 단계별로 체크해야 할 사항들을 고려해서 k8s에서 만든 설정으로 이해했습니다. 자세히 정리하면 다음과 같습니다.

 

k8s 에서는 세가지 Probe가 있습니다.

 

image

※ yaml 파일에서 사용하는 probe 공동 옵션

이 옵션들을 사용해서 각 단계별 확인이 필요한 부분들을 유연하게 결정해야 합니다.

 

Application 기능으로 이해하기 - ConfigMap, Secret

 

좀 시간이 되었지만 자바 개발자로 일하던 때가 잠깐 2년 정도 있었습니다.

그 당시 회사에 개발인력이 소수라서 앱에 필요한 Properties와 yml 파일들을 환경별로 관리하는 업무도 맡았었는데

옛날 기억이 나서 반가웠던 파트입니다!

 

K8s 클러스터에서의 환경변수 관리 방법을 강의을 통해 들은 내용 토대로 정리합니다!

 

ConfigMap 과 Secret은 환경변수들을 처리하기 위해 만들어졌고 Secret은 이름 그대로 민감한 정보를 처리하기 위해서 만들어 졌지만 k8s 에서는 Base64 인코딩만 한 뒤 etcd 서버 저장 됩니다. 따라서 ectd 서버에 접근해서 가능해 디코딩만 한다면 민감정보들을 탈 취 당할 수 있다는 단점이 있습니다.

 

솔루션과 각 솔루션별 특징

  1. Cluster 안에서 관리 하는 방법

     

    • 노드가 죽거나 클러스터 전체가 장애 나면 데이터가 사라진다는 단점이 있습니다.

     

  2. 암호화 시키는 Key를 따로 관리

     

    • key를 네트워크가 없는 물리적 디스크에 보관하고(보안 USB 등)가지고 있는 관리자만 소지. 보안적으로는 매우 좋지만, key를 관리하는 사람이 인사변동 되었을 때 인수인계가 제데로 되지 않으면, 환경변수에 접근 할 수 없습니다.

       

     

  3. 서드파티 솔루션 사용

    • HashiCorp Vault, Akeyless 등을 사용하여 복구 키 관리와 설정을 맡길 수 있습니다.

       

       

      2, 3번의 장점은

       

      외부 해킹 시도로 시스템이 노출 되었다고 왔다고 해도 안전하다는 장점이 있습니다.

 

Application 기능으로 이해하기 - PVC, PV, Deployment, Service, HPA

 

PV/PVC

파드가 장애로 인해 죽게 되면 컨테이너도 다운되고 그 안에 데이터 또한 복구가 어렵게 됩니다.

이 것을 방지하기 위해 PV(Persistent Volume)이 필요 합니다. 파드가 죽어도 데이터가 보존되는 저장소.

 

위 옵션은

PV, PVC와 비슷한 역할을 하지만 노드가 죽으면 같이 사라진다는 치명적인 단점이 존재 합니다.

 

PVC(Persistent Volume Claim)가 생기고 나서

개발자가 PVC를 통해 요청을 한다면 용량에 맞게 쿠버네티스가 PV에 바인딩 해준다.

 

스토리지 용량이 PV 보다 작아야 하고,

AccessMode(접근 모드)가 일치가 필수적으로 필요하고

옵션으로StorageClass가 있다면 StorageClass와 기타 조건도 있다면 PVC, PV 설정을 서로 일치 시켜야 합니다.

 

개발자가 PVC를 보낼 때에는 위의 것들이 고려 되어야 합니다.

 

Deployment

 

k8s cluster 환경에서는

무중단 배포를 지원한다! 전에 직장에서는 에플리케이션 버전 업데이트를 할 때 트래픽이 가장 적은 3~4시에 진행 했었는데, k8s 에서는 그런 수고로움을 덜을 수 있어 좋다.

 

엡이 돌아가는 환경에 따라 맞춰 사용할 수 있게끔 다음 배포 전략들이 있다.

 

 

Rolling Update 가 가장 기본적인 쿠버네티스의 전략입니다.

 --------------------

다른 분의 블로그를 둘러보다 더 알게된 내용

https://inf.run/pG62s

그런데 Rolling Update 중에 readiness Probe가 너무 빨리 성공해서, 아직 캐시 워밍업이 안 된 Pod에 트래픽이 들어갔다면? 이는 응답 지연이나 에러 발생의 원인이 된다.

 

이것을 방지하기 위해서는 [점진적 헬스 체크] 설정이 중요하다고 한다.

 


HPA

Kubernetes에서 애플리케이션의 부하에 따라 파드(Pod)의 개수를 자동으로 조정해주는 기능입니다. 주로 CPU 사용량, 메모리 사용량, 혹은 커스텀 메트릭을 기준으로 동작합니다

 

HPA의 역할에도 엉청난 트래픽이 몰릴 때는 파드들이 시작 도중에도 트래픽이 발생함으로 부하로 인해 장애가 날 수도 있다. 따라서 사전에 트래픽이 몰리는 시점에 미리 리소스들을 생성해 놓는 등의 조치가 추가적으로 필요한 경우가 있다.

 

정리

2주차 에는 많은 오브젝트들을 배웠는데

데브옵스 부서에서 일하게 된다면 오브젝트들을

 

Probe로 각 파드를(앱 로딩 -> 지속적으로 앱 살아있는지 체크 -> DB등 내부 설정을 마무리 한 뒤 외부 트래픽 활성화) 단계 별로 헬스 체크를 하고

ConfigMap/Secret을 통해 에플리케이션에 필요한 환경변수를 설정하고

Deployment 를 통해 서비스별 회사의 상황에 맞게 배포 전략을 정하며

HPA를 통해 트래픽에 변화에 맞춰 따라 리소스를 줄이거나 늘리는 설정으로 변칙적인 트래픽에 탄력적으로 대응

이렇게 쓸거 같다!

 

CKA 자격증은 땃었지만 겉할기 식으로 배운거 같다 몰랐던 내용들이 꽤 있다 😂

 

 

미션

미션 중 트러블슈팅 등 기록으로 남길 내용은 미션 마감 전에 업데이트하겠습니다!

 

데브옵스 · 인프라 쿠버네티스어너더클래스 2주차회고

답변 0