본문 바로가기

Kubernetes

Managed K8s & On premise K8s

기본적인 구성요소는 동일

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

GitHub - aws/karpenter: Karpenter is a Kubernetes Node Autoscaler built for flexibility, performance, and simplicity.

 

 

IAM은 사용자 계정 및 그룹에 역할을 관리하는 서비스를 제공

각 리소스에 대한 접근 권한을 설정하는 K8s의 RBAC과 연동하여 사용

OIDC와 IAM, RBAC을 연결

 

EKS의 경우 OIDC를 선제적으로 등록해야 사용이 가능한데, 있어야 EKS 클러스터에서 IAM 인증을 할 수 있음

  • IAM은 토큰 발급과 역할, 권한 관리를 집행
  • OIDC 공급자를 사용해야 K8s 서버가 IAM에서 발급한 OIDC 토큰을 검증할 수 있음
  • 검증된 토큰으로 권한 부여 여부를 결정하고 K8s 내에서 접근 권한을 가짐

IAM으로 등록된 계정으로K8s 클러스터 관리 가능

실제 K8s의 RBAC ( cluster role을 가진 service account ) 과 매핑하여 내부 권한 제공

 

 

어떤 기준에 의거하여 신청된 노드를 어떤 컴퓨팅 자원에서 제공되는지

기본적으로 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

소개 - 클러스터 API 설명서 (k8s.io)

'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