2023. 10. 22. 08:26ㆍDev
1. 소개
https://www.youtube.com/watch?v=BE77h7dmoQU
Kubernetes가 등장한던 때의 상황들을 잘 보여주는 다큐멘터리
docker가 등장하고 큰 인기를 얻으면서, 컨테이너 오케스트레이션 도구들이 막 생겨나고 있었다.
Kubernetes란 무엇인가?
왜 Kubernetes를 배워야 하는가?
Kubernetes의 역사와 배경
그리고 모든 기술들이 그렇지만 커뮤니티를 활용하는것을 추천드립니다.
https://open.kakao.com/o/gxSooElb
https://kubernetes.io/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-it-do
쿠버네티스 공식 문서에 concepts > overview가 있습니다.
그 중 Why you need Kubernetes and what it can do, What Kubernetes is not은 꼭 읽어봐야 한다고 생각합니다.
또 한글 번역본과 원문은 내용에 차이가 있을 수 있으니 영어 원문으로 보시는것을 추천드립니다.
2. 컨테이너 기술 이해
도커(Docker) 소개
컨테이너의 이점
컨테이너 오케스트레이션의 필요성
개인적으로는 쿠버네티스를 처음 시작할 때
온프레미스에서 설치형으로 시작하는것은 큰 진입 장벽이라고 생각합니다.
그래서 가능하면 퍼블릭 클라우드에서 시작하는게 좋아보입니다.
대표적인 CSP(Cloud Service Provider)로는 AWS, GCP, Azure가 있습니다.
그리고 각각 managed kubernetes가 있습니다.
AWS의 EKS, GCP의 GKE, Azure의 AKS입니다.
저는 쿠버네티스를 잘 모르는 상태로 EKS부터 시작을 했습니다.
퍼블릭 클라우드에서 쿠버네티스를 시작하는것의 가장 큰 위험은 비용 문제입니다.
2023년에 리뉴얼 된 eksworkshop을 통해서 입문하는것을 추천드립니다.
EKS Best Practices도 같이 보면 좋습니다.
https://aws.github.io/aws-eks-best-practices/
EKS를 배포하는 방법은 여러가지가 있는데
AWS 콘솔에서 클릭해서 배포하는 법, eksctl을 사용하는 법,
그 외에 IaC 도구들 중 (Cloudformation, Terraform, CDK 등)이 있습니다.
실제 업무에서는 이런 도구들이 어떤 장단점이 있고 왜 쓰는 지 아는지가 중요하더라구요.
3. Kubernetes 기본 개념
쿠버네티스의 장점 중 하나는 내부 구조를 정확하게 다 몰라도 사용할 수 있다는 점이라고 생각합니다.
인터페이스가 잘 갖춰져있어서 잘 돌아가는 컨테이너 이미지만 있어도 쉽게 테스트를 할 수 있죠.
저희가 자동차의 내부 동작 원리를 몰라도, 시동을 걸고 운전을 할 수 있는것 처럼 말이죠.
쿠버네티스를 처음 공부한다면, ChatGPT에게 질문할 수 있을 정도를 첫 목표로 하면 좋을것 같습니다.
그리고 이를 위해서는 Pod, Service, Replicaset, Deployment 등을 알아야 합니다.
4. Kubernetes 아키텍처
마스터 노드 컴포넌트
워커 노드 컴포넌트
etcd 데이터 저장소
매니지드 쿠버네티스를 사용할 때 이점으로는
마스터 노드 (컨트롤 플레인)을 신경쓰지 않아도 되는 부분입니다.
제가 추천하는 학습의 첫 사이클은
파드를 배포하고, 디플로이먼트를 배포하고
서비스와 인그레스, 로드밸런서등을 사용해서 연결을 확인해는 단계
그 다음은 스토리지, PV, PVC를 사용해보는 것
ConfigMap과 Secret을 사용해보는 것입니다.
파드와 디플로이먼트를 사용하고 나서
데몬셋과 statefulset이 왜 필요한지 배우는게 좋습니다.
---
kubectl의 경우
저는 CKA 시험을 취득하면서 굉장히 익숙해졌습니다.
그 전에는 get, describe, apply, delete 정도만 사용했다면
시험을 보면서, logs, exec, rollout, event들을 확인하는데 거부감이 없어졌다고 느낍니다.
그리고 lens, k9s같은 툴을 사용하기도 합니다.
실제로 존재하는 pod와 달리
service는 추상적인 컴포넌트라고 생각해서 조금 더 어려웠습니다.
특히 온프레미스에서 로드밸런서를 만드는것과 퍼블릭 클라우드에서 로드밸런서를 만드는것은
아예 다른 분야라고 느껴질 정도의 괴리감이 있었습니다.
---
그리고 쿠버네티스의 장점 중 하나는
모니터링, observability라고 하는 관측 가능성등이 중요해졌는데요
이때는 prometheus, grafana로 시작을하면 좋습니다.
유료 상용 솔루션을 사용하지 않는다면, 사실상 표준입니다.
---
배포 전략
롤링 업데이트, 블루그린, 카나리
이 때 pod lifecycle, container-lifecycle-hooks 등이 필요하게 됩니다.
모놀리식 애플리케이션에서 컨테이너화 된 애플리케이션으로 넘어올 때 중요한 점이라면
k8s의 self-healing을 잘 활용하기 위해서는 앱이 "잘 죽는 것"이 생각보다 중요합니다.
네트워크에서 등장하는 "우아한 종료" 처럼
컨테이너화 된 앱을 쿠버네티스에 띄우게 되면 graceful한 종료가 반드시 필요합니다.
---
Security는
'Dev' 카테고리의 다른 글
명령어 꼭 외워야 할까요 (3) | 2024.11.10 |
---|---|
composable CDP란? (0) | 2024.05.08 |
가볍게 읽기 좋은 개발 관련 글들 (1) | 2023.09.28 |
How to solve error while creating s3 bucket AccessControlListNotSupported: The bucket does not allow ACLs (0) | 2023.08.23 |
Helm Error repo grafana not found (0) | 2023.06.26 |