본문 바로가기

⭐ Kubernetes & EKS

(140)
EKS NodeGroup의 개념 및 역할 # 예전부터 궁금해 왔던점이 있었는데, 바로 EKS의 NodeGroup의 개념 이었다. NodeGroup의 개념이 그룹핑의 개념인지 아니면 리소스 자원의 공유의 개념인지 궁금했었다. 그래서 직접 노드그룹을 생성해서 어떻게 eks에서 pod 들이 반응하는지 체크해 보기로 했다. 기본 상태는 아래와 같다. 여기서 워커노드 하나를 추가해보자. 일부 pod가 새로 생긴 워커노드로 재 배치되어 실행되는 모습을 볼 수 있다. 결론은 워커노드도 결국에는 클러스터링 되어 자원을 공유한다고 볼 수 있다. 새로운 워커노드가 생성이되면 일부 pod들을 새로운 워커노드에 생성이 되고, 기존에 있었던 노드의 자원은 저절로 삭제되어 확보가 된다고 볼 수 있다. 그리고 pod를 수동으로 노드에 배치 할 수도 있다. 궁금증이 다소 ..
eks 클러스터 확인 # 현재 어느 클러스터에 있는지 확인하는 명령어 kubectl cluster-info # 조회를 하면 어래와 같이 클러스터 정보가 나온다. kim:~/environment $ kubectl cluster-info Kubernetes control plane is running at https://111111111111111111111111.gr7.ap-northeast-2.eks.amazonaws.com CoreDNS is running at https://1111111111111111111111111.gr7.ap-northeast-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug an..
Ingress를 활용한 ALB 추가하기 # Ingress는 서비스 이름만 바꿔서 동일한 pod를 실행 시킬수 있다. 아래는 예시이다. NAME CLASS HOSTS ADDRESS PORTS AGE api-ingress * k8s-.ap-northeast-2.elb.amazonaws.com 80 3d23h web-ingress * k8s-.ap-northeast-2.elb.amazonaws.com 80 5d23h web-ingress-test-alb * k8s-.ap-northeast-2.elb.amazonaws.com 80 5m11s 위의 내용을 보면 web-ingress,api-ingress와 web-ingress-test-alb는 같은 서비스를 실행한 것이다. web-ingress-test-alb는 2개의 api와 2개의 컨테이너를 맵핑한..
Ingress의 동작구조 살펴보기 # AWS가 제공하는 잉그레스의 개념도 (가장 심플하게 잘 되어 있는거 같다.) 그렇다면 잉그레스란 무엇인가? 인그레스(ingress)는 클러스터 외부에서 내부 서비스로 접근하는 HTTP, HTTPS 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음을 말한다. 클러스터 외부에서 접근가능한 URL을 사용할 수 있게 하며, 트래픽을 로드밸런싱도 해주고, SSL 인증서 처리를 해주고, 도메인 기반으로 가상 호스팅을 제공한다. 인그레스(ingress)는 전제조건으로 인그레스 컨트롤러가 있어야 인그레스를 충족할 수 있는데 대표적으로 AWS에서 제공하는 AWS Load Balancer Controller가 있다. 실제 환경에서의 Ingress 구성내역을 확인하기 - 여기서 중요한것은 EKS에서 ALB의 포트를 자동으..
데몬셋의 개념 및 조회하기 (pod edit) # 데몬셋의 개념 데몬셋(Daemonset) 이란? 데몬셋은 디플로이먼트와 유사하게 파드를 생성하고 관리 한다. 디플로이먼트는 롤링 업데이트나 배포 일시 중지, 재개 등 배포 작업을 좀 더 세분화하여 조작하였다면, 데몬셋은 특정 노드 또는 모든 노드에 항상 실행되어야 할 특정 파드를 관리 한다. 하나의 예를 들자면 모니터링 시스템 구축을 위해 모든 노드에 특정 파드(로그 수집용)를 관리해야 할 때 사용할 수 있다. 모니터링 시스템을 원활히 사용하기 위해선 모든 노드에 항상 로그를 수집할 무언가가 필요하기 때문이다. 특정 노드를 지정하여 사용할수도 있다. 데몬셋 생성 및 확인 apiVersion: apps/v1 kind: DaemonSet metadata: name: elasticsearch namespa..
쿠버네티스 치트시트 https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/#bash kubectl 치트 시트 이 페이지는 일반적으로 사용하는 kubectl 커맨드와 플래그에 대한 목록을 포함한다. Kubectl 자동 완성 BASH source
NameSpace 와 EKS Network? 하나의 Namespace에 생성된 리소스는 하나의 묶음이라고 볼수 있다. 그렇다면 확인해 봐야할게 뭐냐면 바로 동일한 NameSpace에서 실행되는 리소스는 서로를 바라보는 관점이 localhost의 관점인지 확인해 봐야한다. 이것이 왜 중요하냐면, 하나의 통으로 개발된 웹 애플리케이션 이라면 아무런 상관이 없겠지만, 프론트엔드와 백엔드로 나눠져 개발된 웹 애플리케이션은 서로간 통신이 가능해야 하기 때문에 어떤 방식과 어떤 주소로 서로를 호출하고 데이터를 주고받는지가 중요하다. 1. 프론트 엔드와 백엔드로 나누어져 개발된 애플리케이션이 같은 NameSpace에서 실행 됐을때 어떤 반응을 보이는지 어떤 주로소 호출을 하는지 localhost로 설정 했을때 과연 동일한 NameSpace에서는 local로 호..
Deployment Port & Service Port 구분하기 EKS의 Container port인 Deployment.yaml에 지정된 포트정보와 Service.yaml에 정의된 포트정보는 아래와 같다. container port가 Deplotment.yaml 의 port 이고, target port도 Deplotment.yaml에서 제공하는 port 이다. service port가 Service.yaml 의 실제 서비스 되는 port라고 할 수 있다.