본문 바로가기

⭐ Kubernetes & EKS

(140)
EKS에 CSI Driver 설치하기 # EKS에 CSI Driver 설치하기 1. CSI Driver가 필요한 이유? - EKS 1.23 부터는 CSI Driver만 사용하여 EBS와 연결 할 수 있다. 그러니까 한마디로, EKS에 pod로 DB를 올리거나, 기타 EBS가 필요한 애플리케이션을 올릴경우 CSI Driver가 필수로 필요하다. - CSI Driver는 인터페이스로써 DB나 애플리케이션과 EBS 드라이버를 연결해주는 매개체 역할을 한다. 2. EBS CSI Driver의 역할? - 공식 사이트 에서는 아래와 같이 설명을 하고 있다. 1. Kubernetes 와 Amazon EBS 볼륨 을 통합한다. 2. Kubernetes 클러스터 내에서 EBS 볼륨을 쉽게 구성 및 관리가 가능하다. 3. Kubernetes 클러스터에서 EB..
PV, PVC를 이용한 EBS 볼륨 사용하기 # PV와 PVC를 이용한 EBS 볼륨을 사용해보자. PV와 PVC는 pod를 생성하는 yaml 관점에서 보면 EFS인지 EBS인지 상관 하지 않고 볼륨만 생성해주는 역할을 한다고 보면 된다. 예를들어 인프라를 관리하는 사람은 PV만 생성해서 두면, 개발자는 PVC를 생성하여 볼륨을 사용 할 수 있다. 그렇다면 볼륨을 생성하는 과정에 대해서 알아본다. 1. EBS 볼륨을 생성 - AWS 콘솔에서 EBS볼륨을 생성하고 해당 볼륨의 ID를 복사한다. 2. PV를 생성 - ebs-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: ebs-pv spec: capacity: storage: 8Gi accessModes: - ReadWriteOnce aws..
파드, 서비스 도메인을 이용한 통신 CoreDNS는 파드 또는 서비스를 도메인으로 접근할 수 있습니다. 파드/서비스 도메인은 설정 후 변경되는 파드IP, 서비스 IP의 불편함을 해결해줍니다. 파드 또는 서비스가 수정된다면 (Cluster)IP가 수정됩니다. CoreDNS는 파드와 서비스에 대한 도메인을 관리하며 해당하는 DNS요청이 오면 DNS응답을 전달합니다. - 파드 도메인과 서비스 도메인의 생성 방법은 아래와 같다. 파드 도메인: ..pod.cluster.local 서비스 도메인: ..svc.cluster.local - 하지만 EKS에서 노드그룹을 수정하면 초기화가 서비스 도메인으로 설정해 놓아도 초기화가 된다. - 끝 -
Cordon & Uncordon # Cordon & Uncordon Cordon - 명령어 kubectl cordon cordon 명령어는 현재 노드에 배포된 Pod는 그대로 유지하면서, 추가로 생성되는 Pod의 배포를 제한하는 명령어다. 따라서, drain 과정에서의 cordon이 포함되어 있다고 볼 수 있다. Uncordon - 명령어 kubectl uncordon drain 혹은 cordon 명령어를 적용한 노드는 SechedulingDisabled 상태가 되어 더 이상 Pod이 scheduling되지 않는다.kubectl uncordon는 노드의 이러한 SchedulingDisabled 상태를 제거하여 노드에 Pod이 정상적으로 스케쥴링 될 수 있도록 복구하는 명령어다. - 끝 -
Drain # Drain Drain 이란? kubectl drain은 노드에 존재하는 모든 Pod을 제거하고, Pod들을 다른 노드에 새롭게 스케쥴링하는 명령어이다. 그리고 kubectl drain이 적용된 노드는 SchedulingDisabled 상태가 되며, 이후 새롭게 생성되는 어떤 Pod도 해당 노드에는 생성되지 않는다. 명령어 kubectl drain minikube --force --ignore-daemonsets # 모든 Pod이 종료되므로 주의 - 여기서 주의할 점은 StaticPods는 재배치 되어 생성되지 않는다. - kubectl drain 명령어는 새로운 Pod을 배포할 수 있는 추가적인 노드가 있는 경우에 가능하다. 그래서 1개의 노드로 운영되는 minikube 환경에서는 테스트가 현실적으로..
포트별로 서비스 갯수 및 형태를 나누기 # 포트별로 서비스 갯수 및 형태를 나누는 작업에 대해 알아보자. - 일단 eks의 서비스를 조회하면 아래와 같이 PORT(S)에 할당 가능한 포트를 확인 할 수 있다. - 2개의 서비스를 맵핑 시킬수 있는데 하나는 80 포트를 활용하여 가능하고 또하나는 443포트를 활용하여 서비스가 가능하다. - 여기서 확인해야할 내용은 포트별로 다른 유형의 서비스가 할당이 가능한지 이다. - 예를들어 80은 로드밸런서로 44은 또다른 NLB 서비스의 리스너에 등록하여 서비스를 하는게 가능할까 이다. 결론은 가능하다이다. 이론적으로도 서로다른 서비스포트와 노드포트를 각각 가지고 있으므로, 서로다른 유형의 서비스 타입을 세팅해도 정상적으로 서비스가 가능하다. 1. 테스트진행 - 80은 LoadBalancer 타입으로 세..
Ingress와 ALB 사용시 한개의 ALB에 여러 서비스 맵핑하기 # Ingress와 ALB를 연동하여 사용 시 한개의 ALB에 여러 서비스를 맵핑하는 방법을 알아본다. 1. 문제점 Ingress는 특성상 Namespace별로 리소스를 구분하여 생성한다. 그리고 ingress-alb 사용시 인그레스를 개별로 생성할때마다 alb가 생성이 되므로 비용관리나 리소스 관리 측면에서 매우 비효율적이다. 2. 대안 - 해결방법 1개의 alb 주소로 여러개의 서비스를 Namespace 구분없이 설정할 수 있다면 매우 효율적으로 운영이 가능하다. 3. 적용전 확인사항 - 아래는 AWS LoadBalancer를 적용 시 사용할 수 있는 다양한 옵션들을 제공한다. https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/g..
Ingress 잉그레스 관련 사이트 모음 # 잉그레스 관련 사이트 모음 - ALB 로드밸런서 컨트롤러 공식사이트 https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/targetgroupbinding/targetgroupbinding/ TargetGroupBinding - AWS Load Balancer Controller TargetGroupBinding TargetGroupBinding is a custom resource (CR) that can expose your pods using an existing ALB TargetGroup or NLB TargetGroup. This will allow you to provision the load balancer ..