Kubernetes 32

[3주차] EKS Storage

이번 주는 EKS에서 Storage 관련 내용과 노드 그룹을 추가하는 방법을 알아봤습니다. EKS Storage EKS에서는 Amazon CSI driver를 통해 스토리지 볼륨을 생성하고 관리합니다. 먼저 CSI에 대해 알아보겠습니다. CSI(Container Storage Interface) CSI는 storage 벤더가 여러 컨테이너 오케스트레이션 시스템에서 동작하는 플러그인을 개발하기 위한 표준(인터페이스)을 정의합니다. 다음과 같은 API를 정의합니다. (참고) 볼륨의 동적 프로비저닝 및 해제 노드에 볼륨 부착 및 해제 / mount 및 umount 볼륨 스냅샷 생성 및 삭제 스냅샷으로부터 신규 볼륨 생성 등 CSI driver CSI 표준을 따라 구현하여 실제 스토리지 시스템과 kubernet..

EKS에서 볼륨 snapscheduler 설치하기

VolumeSnapshot을 주기적으로 생성할 수 있는 방법을 검색하던 도중 snapscheduler라는 프로젝트를 발견했습니다. helm으로 간단하게 설치가 가능해서 실제로 잘 동작하는지 실습을 통해 알아봤습니다. 해당 실습 전에 Volume Snapshots Controller가 클러스터에 설치가 되어 있어야 합니다. 설치 과정은 이전 포스팅에 정리해 두었습니다. 설치 $ helm repo add backube https://backube.github.io/helm-charts/ $ kubectl create namespace backube-snapscheduler $ helm install -n backube-snapscheduler snapscheduler backube/snapscheduler ..

EKS에서 pvc로 생성한 ebs에 태그 추가하기

EKS에서 pvc로 생성한 ebs에 원하는 태그를 추가할 수 있는지 확인해보겠습니다. 참고 문서에 작성된 내용을 기반으로 실습을 해보겠습니다. 문서에 따르면 EBS CSI Driver 1.6.0 이상 부터 custom tag 추가가 가능합니다. 먼저 add on 버전을 확인해보겠습니다. eksctl get addon --cluster ${CLUSTER_NAME} 2023-05-09 22:28:20 [ℹ] Kubernetes version "1.24" in use by cluster "myeks" 2023-05-09 22:28:20 [ℹ] getting all addons 2023-05-09 22:28:22 [ℹ] to see issues for an addon run `eksctl get addon --..

[2주차] EKS Networking

Amazon VPC CNI란? Amazon VPC Container Network Interface의 약자로 Pod가 VPC 네트워크의 IP를 사용할 수 있게 해주는 플러그인입니다. 또한, Pod 안의 컨테이너들이 network namespace를 공유하여 local port를 통해 통신할 수 있게 합니다. VPC CNI는 EKS add-on으로 제공되며 모든 노드에서 실행이 필요하므로 aws-node 라는 DaemonSet이 배포됩니다. EKS 클러스터 생성 시 기본적으로 설치되지만, 최신 버전을 사용하기 위해서는 별도로 설치가 필요합니다. 구성 요소 CNI Binary Pod network를 구성하여 Pod간 통신을 가능하게 함 노드의 root 파일 시스템에서 실행되며, Pod가 추가되거나 노드에서 ..

[1주차] EKS 설치 및 기본 사용

좋은 기회로 EKS 워크샵 스터디에 참여해서 전체 과정과 과제를 남겨보려고 합니다. 1주차 주제 EKS 아키텍처 Public/Private endpoint 사용 별 Cluster endpoint로의 접근 방식 Control Plane Data Plane 통신 경로 클러스터 생성 실습 CloudFormation을 통한 bastion host, VPC 배포 eksctl cli를 사용한 클러스터 생성 EKS 아키텍처 EKS Cluster 생성 시 Managed VPC에 Control Plane이 배포되고 통신을 위한 eni가 설정한 VPC의 각 subnet에 생성됩니다. EKS API server endpoint(NLB)에 연결하여 kubectl 명령어를 수행할 수 있습니다. EKS Control Plane은..

EKS Node의 최대 Pod 수

개요EKS Node에 배포 가능한 최대 pod 수는 ENI에 할당 가능한 IP 수와 EC2에 부착 가능한 최대 ENI 수에 따라 결정됩니다. 따라서 Node의 인스턴스 타입 별로 다른 최대 pod 수를 갖게 됩니다.참고로 pod 수 계산식의 +2 는 hostNetwork 모드로 실행되는 pod(VPC CNI, kube-proxy)가 반영된 부분입니다.Node에 배치된 pod 수에 모든 pod가 포함되므로, 추가적으로 hostNetwork를 사용하는 pod가 있다면, 조정하여 더 많은 pod를 배치할 수 있습니다. 참조. 인스턴스 타입 별 Max Pod 수하지만 VPC CNI add-on의 prefix 할당 모드를 사용하면서 더 많은 수의 pod를 Node에 배포할 수 있게 되었습니다. VPC CNI Pr..

Kubernetes 2022.08.01

EFS 권장 옵션을 포함한 EKS 내 PV 생성

noresvport EFS에서의 noresvport 마운트 옵션은 네트워크 연결이 다시 설정될 때 NFS 클라이언트가 새로운 소스 포트를 사용하도록 합니다. 네트워크 복구 후에도 EFS 파일시스템을 중단 없이 사용하기 위해 적용하는 옵션입니다. 해당 옵션을 적용하여 TCP 재연결 시에 Linux NFS 클라이언트가 TCP 소스 포트를 재사용을 시도하는 것을 막아 지연 현상을 방지할 수 있습니다. pv에 적용하기 pv를 생성하는 yaml에 아래와 같이 mount option을 추가하여 noresvport 옵션을 적용할 수 있습니다. apiVersion: v1 kind: PersistentVolume metadata: name: pv-efs spec: capacity: storage: 5Gi volumeMo..

Kubernetes 2022.06.24

EFK Stack 구성하기 (Amazon OpenSearch + FluentBit + Kibana)

Kubernetes 내 컨테이너의 로그 수집에는 다양한 방법이 있습니다. 구성 조합에 따라 ELK, EFK 등이 있고, Amazon EKS 구성 시에는 Container Insights를 통해 CloudWatch에 로그를 게시할 수 있습니다. 그 중 AWS for Fluent Bit 이미지를 사용하지 못하는 경우에 fluentbit과 Amazon OpenSearch Service를 활용하여 EFK를 구성해보겠습니다. 현재 EKS Anywhere에서는 AWS for Fleunt Bit 이미지 사용 시 metadata를 찾지 못해 정상적으로 컨테이너를 구동할 수 없습니다. [목표] [기본 환경] Internet Outbound 통신이 가능한 Kubernetes Cluster [배포 순서] 1. IAM Use..

Kubernetes 2022.05.23

Amazon EKS Cluster Autoscaler OOM killed 현상

EKS 클러스터에 배포된 Cluster Autoscaler Pod가 OOMkilled 되는 현상이 발생했다. 일시적으로 해당 Deployment의 Memory를 상향 조정하여 해결하였으나 지속적인 모니터링이 필요해 보인다. (Pod/Node 수에 따라 Memory가 더 필요하다는 글이 있음 : https://github.com/kubernetes/autoscaler/issues/3044) [2022/05 - AWS 제공 cluster autoscaler yaml] --- apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-addon: cluster-autoscaler.addons.k8s.io k8s-app: cluster-autoscaler name: ..

Kubernetes 2022.05.08
반응형