기본적인 구성요소는 동일
Master node, Worker node, API, ETCD 등 일반적으로 구성되는 k8s 구성
management k8s에서는 이 중 Worker node를 사용자들에게 제공하고 Master node를 제공 업체 측에서 관리
사용자는 배포 및 스케일링 작업을 주로 작업
제공 업체가 제공하는 서비스는 아래와 같음
보안 | IAM Authenticator RBAC 지원 각 Cloud 제공 업체 별로 보안 서비스 센터 지원 정책 설정 및 관리 UI 제공 |
네트워킹 | IPv6 지원 서비스 메시 지원 서비스 메시로 트래픽 라우팅을 정의하여 암호화 |
로드 밸런싱 | Application Load Balancer 제공 Network Load Balancer 제공 Classic Load Balancer 제공 인증서 등록으로 HTTPS 지원 |
로깅 | 사용자 활동 및 API 사용에 대한 정보 추적 및 시각화 로깅 데이터를 기반으로 경보 기능 제공 시각화된 클러스터 자체 상태로 관리 용이성 확보 |
CICD 파이프라인 | CICD에 대한 튜토리얼 등 기술 지원 |
확장 | 자원에 따른 노드 오토 스케일링 지원 |
비용 모니터링 | 각 서비스 별 사용량에 대한 과금량 시각화 |
서버리스 컴퓨팅 | 별도의 인프라 없이 컨테이너 배포 기능 지원 |
이미지 관리 | Docker hub와 같은 이미지 저장소 제공 |
저장소 관리 | K8s의 볼륨에 연동되어 생성 관리 서비스 제공 |
머신 러닝 | 분산 학습 제공 모델 훈련 자동화 및 배포 데이터 전처리 |
Q/A
Worker node sceduling가 auto scaling에 대해서 좀 더 자세한 설명이 필요한 것으로 이해했습니다.
각 cloud 제공 업체는 node auto scaling을 지원하는데 그 기준은 다음과 같음
- CPU 사용률
- 메모리 사용률
- 네트워크 사용률
- 사용 가능한 노드의 수
- pod의 수
- pod의 실패 여부
- 사용자 정의 데이터
위 지표를 기준으로 아래와 같이 트리거를 설정
- 각 지표를 사용자가 정의한 임계점에 따라 cloud사에서 제공하는 모니터링 데이터에서 발생하는 알림
- pending 상태인 pod를 스캔
- 스캔 간격은 기본 값 10초를 지니며, 변경 가능
- Karpenter를 사용하여 스캔
대부분의 제공 업체는 cluster autoscalier 기반으로 서비스
autoscaler/cluster-autoscaler at master · kubernetes/autoscaler · GitHub
Karpenter
IAM은 사용자 계정 및 그룹에 역할을 관리하는 서비스를 제공
각 리소스에 대한 접근 권한을 설정하는 K8s의 RBAC과 연동하여 사용
OIDC와 IAM, RBAC을 연결
EKS의 경우 OIDC를 선제적으로 등록해야 사용이 가능한데, 있어야 EKS 클러스터에서 IAM 인증을 할 수 있음
- IAM은 토큰 발급과 역할, 권한 관리를 집행
- OIDC 공급자를 사용해야 K8s 서버가 IAM에서 발급한 OIDC 토큰을 검증할 수 있음
- 검증된 토큰으로 권한 부여 여부를 결정하고 K8s 내에서 접근 권한을 가짐
IAM으로 등록된 계정으로K8s 클러스터 관리 가능
실제 K8s의 RBAC ( cluster role을 가진 service account ) 과 매핑하여 내부 권한 제공
- AWS의 경우 aws-auth configmap에서 IAM에 등록된 역할과 service-account를 입력해 매핑
- 해당 기능을 IRSA라고 부르는데 service account를 사용하여 IAM과 연결
- IAM Role for Service Account의 약자
- eksctl을 통해 매핑
- Amazon EKS와 함께 IAM 또는 IRSA를 사용하여 S3에 대한 액세스 제한
어떤 기준에 의거하여 신청된 노드를 어떤 컴퓨팅 자원에서 제공되는지
기본적으로 VM을 신청 할 시 필요한 정보를 기입받기 때문에 해당 컴퓨팅 자원에 맞는 것을 매칭
CPU, memory 자원 크기, 네트워크, 서브넷, public ip 사용 여부, 스토리지 종류(HDD, SSD), 스토리지 크기, 방화벽, 키 페어, 지역(서울, 도쿄 등등), 사용 OS
해당 지역에 위 기준을 만족할 수 있는 컴퓨팅 자원에 배치
EKS의 경우 기본적으로 EC2(vm)를 기반으로 배포
EKS-A(EKS anywhere)라는 신규 서비스를 통해 베어메탈에 대한 지원
그러나 EKS-A자체는 오픈소스 서비스이나 구독은 베어메탈을 하나 할당해서 해주는 것이 아닌 MCC와 같이 사용자의 서버에 설치해주고 자문료를 받는 개념으로 보임
EKS-A 자체는 공부의 필요성이 보임(AWS의 Managed Service인 EKS의 Management Cluster를 개인 인프라에 직접 설치하여 사용 가능한 제품으로 해석)
Getting started with Amazon EKS Anywhere on Bare Metal | Containers
EKS anywhere에서 사용하는 프로비저닝 툴은 cluster API
'Kubernetes' 카테고리의 다른 글
Kubernetes EFK (0) | 2024.05.23 |
---|---|
Kubernetes Prometheus (0) | 2024.05.23 |
Kubesphere Federation (0) | 2024.05.23 |
Kubekey를 사용한 Kubernetes, Kubesphere 배포 (0) | 2024.05.23 |
Cloud provider Managed K8s Service (0) | 2024.05.23 |