본문 바로가기

AWS EKS 실습

(36)
K4K8S-EKS 설치 Kong의 Kubernetes Architecture는 다음과 같다. 우리는 K4K8S를 위해 EKS에 EKS Cluster를 통해 Kong 을 설치한다. 임시 테스트 환경이기 때문에 worker node는 1대로만 구성하고 EKS 버전은 현 시점 최신 버전인 1.19를 설치한다. $ eksctl create cluster --name K4K8S --version 1.19 --nodegroup-name standard-workers --node-type t3.medium --nodes 1 더보기 EKS Cluster에 설치된 K4K8S 상태를 체크한다. $ eksctl get cluster NAME REGION EKSCTL CREATED K4K8S ap-northeast-2 True $ aws eks l..
Statefulsets을 사용하는 STATEFUL CONTAINER (w/ Persistent Volume) StatefulSet Pod 집합에 대한 deployment와 scaling을 관리하고 이들 Pod가 다음중 하나 이상의 요구 사항을 갖는 어플리케이션을 위해 안정적으로 제공되는 것을 보장한다. - Stable, unique 네트워크 식별자 - Stable, Persistent Storage - Ordered, graceful deployment and scaling - Ordered, automated rolling updates 이 장에서는 StatefulSet 및 PersistentVolume으로 Amazon Elastic Block Store(EBS)를 다음과 같이 사용하여 MySQL 데이터베이스를 배포하는 방법을 검토한다. ㅁ Amazon EBS CSI Driver ㅇ Container Stor..
Spot Instance로 EKS 구성 이번장에서는 Spot Instance를 통해 비용과 Sacle을 최적화 하는 EKS 환경을 구성해 본다. ㅁ Spot EC2 Worker Node 추가 기존 구성되어 있는 node를 OnDemand Node로 변경하여 신규 생성할 Spot Node와 구분할 수 있도록 함 $ kubectl label nodes --all 'lifecycle=OnDemand' node/ip-192-168-21-20.ap-northeast-2.compute.internal labeled node/ip-192-168-40-208.ap-northeast-2.compute.internal labeled node/ip-192-168-71-49.ap-northeast-2.compute.internal labeled 새로운 Spot w..
Assigning Pods to Nodes 이 파트에서는 pod 할당 전략의 작동 방식, 대안 및 권장 되는 접근 방식을 검토한다. 특정 노드에서만 실행되거나 특정 노드에서 실행되도록 pod를 제한 할 수 있다. 일반적으로 스케줄러가 자동으로 Pod의 적절한 배치를 수행하기 때문에 pod를 노드에 할당하는 제약 조건이 필요하지 않으나 Pod가 연결된 노드에 특성이 일부 있을 수 있어 이 기능도 필요하다. ㅁ NODESELECTOR nodeSelectorsms는 node를 선택하는 제한을 적용하기에 가장 추천하는 기능이다. nodeSelector는 PodSpec의 필드이다. kye-value 맵을 지정한다. Pod가 Node에서 실행될 수 있으려면 Node에 표시된 각 Key-Value Pair가 Label로 있어야 한다. ㅇ Attach a La..
Exposing a Service Kuberenetes는 Pod가 어떤 호스트에 연결되든 관계없이 포드가 다른 Pod와 통신할 수 있다고 가정한다. clarkshim.tistory.com/59 외부 서비스에서 외부 클라이언트로...(Nodeport, Loadbalancer, Ingress) [서비스가 외부에서 액세스 가능하게 하는 방법] ㅇ. NodePort 서비스 타입으로 설정하기 - NodePort 서비스의 각 클러스터 노드는 노드 자체 이름을 통해 port를 열고 port에서 발생한 트래픽을 서비 clarkshim.tistory.com 모든 Pod에 고유한 cluster-private-IP 주소를 제공하므로 포드간에 링크를 명시적으로 만들거나 컨테이너 포트를 호스트포트에 매핑할 필요가 없다. 즉 Pod내의 컨테이너는 모두 local..
EKS Network 정책 실습 (w/Calico) ㅇ Egress Access Control 구현 (EKS workload가 다른 Amazon 서비스 (RDS 또는 EC2 인스턴스) 또는 다른 API End Point와 통신) ㅇ 서로 통신할 수 없는 Microservice Troubleshooting ㅇ EKS에서 Enterprise 보안 control 구현 및 리포트 ㅁ Install Calico aws/amazon-vpc-cni-k8s GitHub project에서 Calico manifest를 받아서 적용하면 kube-system namespace에 daemon set으로 생성된다. kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/v1.6..
Security Groups For Pods 컨테이너화된 어플리케션은 Amazon RDS와 같은 외부 AWS 서비스뿐만 아니라 cluster 내에서 실행되는 다른 서비스간에 엑세스 하는 것이 자주 필요하다. AWS에서 서비스 간의 네트워크 수준 액세스 제어는 종종 보안 그룹을 통해 수행 된다. 이 기능이 출시 되기 전에는 노드 수준에서만 보안 그룹을 할당할 수 있었다. 또한 노드 그룹 내부의 모든 노드가 보안 그룹을 공유하기 때문에 노드 그룹 보안 그룹이 RDS 인스턴스에 액세스 할 수 있도록 허용하여 녹색 Pod에서만 액세스 권한이 있어야 하는 경우에도 노드에서 실행중인 모든 Pod가 RDS에 액세스 엑세스 할 수 있다. Security Groups for Pods는 Kubernetes Pods와 Securty Group을 통합한다. Amazon..
Create An OIDC Identity Provider Cluster에서 Service Accounts를 위한 IAM Role을 사용하기 위해서는 IAM Console에서 OIDC identity provider를 생성해야 한다. 먼저 eksctl version을 확인하여 0.5.1보다 버전이 낮다면 eksctl을 업그레이드 해야 한다. eksctl version docs.aws.amazon.com/eks/latest/userguide/eksctl.html#installing-eksctl 참고 The eksctl command line utility - Amazon EKS The GitTag version should be at least 0.38.0. If not, check your terminal output for any installation or ..