728x90
728x90
Namespace: 리소스를 논리적으로 구분하는 장벽 쿠버네티스에서는 리소스를 논리적으로 구분하기 위해 네임스페이스라는 오브젝트를 제공한다. 간단히 생각해서 네임스페이스는 포드, 레플리카셋, 디플로이먼트, 서비스 등과 같은 리소스들이 묶여 있는 하나의 가상 공간 또는 그룹이라고 이해하면 된다. 예를 들어 모니터링을 위한 모든 리소스들은 monitoring 이라는 이름의 네임스페이스에서 생성할 수 있고, 테스트를 위한 리소스들은 testbed 라는 네임스페이스에서 생성할 수 있다. 또는, 여러 개발 조직이 하나의 쿠버네티스 클러스터를 공유해 사용해야 한다면 조직별로 네임스페이스를 사용하도록 구성할 수 있다. 이렇게 여러 개의 네임스페이스를 사용하면 마치 하나의 클러스터에서 여러 개의 가상 클러스터를 사용하..
Service: 포드를 연결하고 외부에 노출 다른 디플로이먼트의 포드들이 내부적으로 접근하려면 서비스라고 부르는 별도의 쿠버네티스 오브젝트를 생성해야 한다. 서비스는 포드에 접근하기 위한 규칙을 정의하기 때문에 쿠버네티스에서 애플리케이션을 배포하기 위해서는 반드시 알아야 할 오브젝트이다. 핵심 기능은 다음과 같다. 여러 개의 포드에 쉽게 접근할 수 있도록 고유한 도메인 이름을 부여한다. 여러 개의 포드에 접근할 때, 요청을 분산하는 로드 밸런서 기능을 한다. 클라우드 플랫폼의 로드 밸런서, 클러스터 노드의 포트 등을 통해 포드를 외부로 노출한다. 서비스의 종류 ClusterIP 타입: 쿠버네티스 내부에서만 포드들에 접근할 때 사용한다. 외부로 포드를 노출하지 않기 때문에 쿠버네티스 클러스터 내부에서만 사..
POD vs Container 파드는 같은 리눅스 네임스페이스를 공유하는 여러 컨테이너들을 추상호된 집합으로 사용하기 위해서 사용한다. 포드 내의 컨테이너들이 네트워크 네임스페이스 등과 같은 리눅스 네임스페이스를 공유해 사용하기 때문이다. 즉, 도커에서 컨테이너들끼리 네트워크 네임 스페이스를 공유하여 동일한 네트워크 환경을 사용한 것 처럼 POD 내부의 컨테이너들도 같은 리눅스 네임스페이스를 공유해 사용한다. 완전한 앱으로써의 POD 하나의 포드는 하나의 완전환 애플리케이션이다. 만약 하나의 애플리케이션에 로그를 수집하는 기능이나, 변경사항을 갱신해야 하는 경우 포드의 주 컨테이너와 기능 확장을 위한 추가 컨테이너를 함께 포드에 포함시킬 수 있다. 이렇게 포드에 정의된 부가적인 컨테이너를 사이드카 컨테이..
CSI(Container Storage Interface)란, Kubernetes와 같은 CO(컨테이너 오케스트레이션 시스템)의 컨테이너화된 워크로드에, 임의의 블록 및 파일 스토리지 시스템을 노출하기 위한 표준 인터페이스이다. Amazon EBS CSI Driver를 사용하면 표준 Kubernetes 인터페이스를 사용하여, AWS에서 EKS 및 자체 관리형 Kubernetes 클러스터 모두에서 실행되는 애플리케이션에 대해 블록 스토리지를 간단하게 구성하고 사용할 수 있다. Amazon EBS CSI Driver에서는Amazon EKS 클러스터가 영구 볼륨을 위해 Amazon EBS 볼륨의 수명 주기(LifeCycle)를 관리할 수 있게 해준다. 클러스터를 처음 생성할 때는 Amazon EBS CSI D..
EFK stack은 Elasticsearch, Fluent bit(Fluentd), Kibana 3개의 플랫폼 조합을 뜻하며, 클러스터 환경에서 로그의 수집, 검색, 시각화를 가능하게 한다. 그림을 보면 알 수 있듯이, 각 클러스터에 fluent bit가 daemonset으로 log를 수집한다. elasticsearch는 fluent bit가 수집한 로그를 저장하며, 요청에 따라 검색을 한다. 마지막으로 유저가 용이하게 사용할 수 있도록 kibana로 시각화 한다. FluentBit Log는 /var/log(시스템 로그)또는 /var/log/container(파드 로그) 또는 /var/log/pods(파드 로그)에 저장된다. (이때 /var/log/container에서 /var/log/pods로 심볼릭 ..
aws 로드밸랜서 등록후 나오는 503 에러 해결방법 보통은 로드밸랜서의 타겟 그룹에 등록된 타겟이 없을때 혹은 타겟 그룹이 unhealthy 상태일 때 발생한다고 생각하면 편하거. 인스턴스 기반일 경우 타겟 그룹에서 사용할 ec2 인스턴스를 등록하거나 헬스체크를 통과했는지 확인한다. 쿠버네티스 환경에서도 상동하다. 참조: docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html#http-503-issues