전체 글
[Kubernetes] k8s Monitoring : Metrics-Server
📌Index Metrics-Server란? Metrics-Server 설치하기 ✔️ Metrics-Server란? 쿠버네티스의 Metrics-Server는 각 노드에 설치된 kubelet을 통해 node 및 pod의 CPU, Memory의 사용량 Metric을 수집한다. 과거에는 Heapster를 사용했으나, 더 이상 개발되고 있지 않기 때문에(지원 중단) 이를 대체하는 Metrics-Server를 사용한다. Metrics-Server가 있어야 kubectl top 명령어를 사용하여 CPU/메모리 사용량 등을 확인할 수 있으며, HPA(Horizontal Pod Autoscaler) 및 VPA(Vertical Pod Autoscaler)을 사용할 수 있다. ✔️ Metrics-Server 설치하기 다음 ..
[Kubernetes] AWS EKS : EBS CSI(Container Storage Interface) Driver 설치하기
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..
CI/CD란?
최근에는 소프트웨어 개발 시 애자일(Agile) 형태를 많이 추구하게 되는데, 간단하게 설명하자면 작업 계획을 짧은 단위로 세우고, 만들어 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 일종의 개발 방법론이라고 할 수 있다. 개발주기를 이렇게 짧은 라이프 사이클로 진행하다보면, 개발과 운영 사이에 상당히 많은 갭(Gap)이 발생할 수 있다. 매번 개발자가 코드를 수정하고 빌드와 테스트, 배포까지 한다면 상당히 많은 시간이 소요되지만, 레포지토리에 코드를 올리는 것만으로 빌드와 테스트, 배포까지 해결된다면 불필요한 시간을 단축시키고 개발에 더 많은 시간을 투자할 수 있게 된다. 이러한 방법을 제공하는 것이 바로 CI/CD이다. CI/CD란? CI/CD는 애플리케이션 개발 단계..
[Kubernetes] k8s Logging : EFK 개요 및 설치
📌Index EFK란? EFK 설치하기 EFK 세팅하기 ✔️ EFK란? 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(파드 로그)에 저장된다. (이때 ..
[Kubernetes] AWS Fargate로 EKS 배포하기
AWS Fargate란, 서버 또는 클러스터를 관리할 필요 없이 컨테이너를 실행해주는 Amazon ECS 및 EKS를 위한 기술이다. EKS(Elastic Kubernetes Service)에는 EKS Anywhere(타사 클라우드 혹은 온프레미스의 쿠버네티스 클러스터를 등록) 이외에 크게 Fargate 시작 유형과 EC2 시작 유형이라는 모델이 있다. Fargate 시작 유형 애플리케이션을 컨테이너로 패키징 CPU와 메모리 요구 사항을 지정 네트워킹과 IAM 정책을 정의 애플리케이션을 시작 EC2 시작 유형 세분화된 제어 가능 Amazon ECS 및 EKS를 사용하여 서버 클러스터를 관리 서버에 컨테이너를 배치하는 일정을 예약 Amazon ECS 및 EKS는 클러스터 내 모든 CPU, 메모리 및 기타 ..
[Kubernetes] NLB, ALB로 EKS 배포하기 with yaml
📌Index Network Load Balancer(NLB) Ingress for ALB ✔️ Network Load Balancer(NLB) 참고 문서 network-load-balancing alb-ingress aws-load-balancer-controller 실습을 진행할 적당한 디렉토리를 만든다. $ mkdir aws-eks $ cd aws-eks 그리고 다음과 같이 cluster 생성을 위한 yaml파일을 작성한다. myeks.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: myeks-custom #cluster 이름 region: ap-northeast-2 version: "1.22" # 가용영역 지정 avai..
[Kubernetes] AWS EKS(Elastic Kubernetes Service) : eksctl을 이용한 EKS 배포
AWS EKS(Elastic Kubernetes Service)란, k8s ControlPlane이나 Worker Node를 설치 및 운영할 필요 없이 AWS에서 쿠버네티스를 손쉽게 실행할 수 있도록 지원하는 관리형 서비스이다. 고급 설정은 eksctl로만 가능하기 때문에, 일반적으로 AWS 관리 콘솔은 이용하지 않는다. EKS 환경 구성 chocolatey를 이용하여 awscli, aws-iam-authenticator,eksctl, kubernetes-helm을 설치한다. $ choco install awscli aws-iam-authenticator eksctl kubernetes-helm AWS IAM 사용자를 생성하고, aws configure로 액세스키와 시크릿 키를 등록한다. $ aws co..
[Kubernetes] k8s minikube 설치 및 사용법
minikube는 local 시스템에 쉽게 클러스터를 구축 및 세팅할 수 있게 해주는 도구이다. minikube를 설치하기에 앞서 kubernetes CLI와 docker 명령어가 설치되어있어야 한다. 두가지 모두 chocolatey로 설치가 가능하다. 윈도우에 kubernetes cli 설치하기 $ choco install kubernetes-cli --version=1.22.4 윈도우에 docker 명령어 설치하기 $ choco install docker-cli minikube 설치 minikube 또한 다음과 같이 choco를 사용하여 설치할 수 있다. $ choco install minikube cluster 생성 및 실행 $ minikube start 처음으로 start 하는 경우에는, k8s가..
[Kubernetes] 유용한 k8s 관리 도구 모음 : Lens, k9s, VSCode
📌Index Lens k9s VSCode ✔️ Lens Lens는 명령어를 사용하지 않고도, cluster의 정보(node, pod, ns 등등)을 GUI로 확인 가능한 툴이다. kubernetes IDE 형태로 제공한다. Lens는 chocolatey로 설치가 가능하다. 단, choco로 패키지를 설치할 때는 관리자 권한이 필요하기 때문에 터미널을 관리자 모드로 실행해야한다. $ choco install lens 이때, 윈도우에서 Lens를 사용하기 위해서는 k8s cluster에 접근이 가능해야하기 때문에, 윈도우에 kubeconfig 파일을 세팅해둬야한다. 설치완료 후 Lens 애플리케이션을 실행하고, 로그인한다. 다음과 같이 kubeconfig의 context를 확인할 수 있고, Lens내에서 터..
[Kubernetes] k8s Monitoring : Helm으로 Prometheus, Grafana 설치하기
📌Index Prometheus란? Prometheus 및 Grafana 설치 ✔️ Prometheus란? Prometheus란 SoundCloud가 개발한 솔루션으로, 오픈소스 모니터링 툴이다. Prometheus Architecture 빨간색으로 표시된 것이 프로메테우스의 컴포넌트이다. Retrieval : Pushgateway 혹은 Targets으로부터 metrics를 pulling한다. Short-lived jobs : 생명주기가 짧은 것들은 Pushgateway가 받아둔다. Service Discovery : k8s apiserver에게 질의하면 수집 대상을 가지고 온다. TSDB: 시계열(Time Series) DB는 시간대별로 데이터(시계열 데이터)를 저장하기에 최적화된 DB로, Promet..
[Kubernetes] Helm이란? Helm의 개요와 사용법
📌Index Helm이란? Helm 설치하기 Helm 사용법 Helm 실습 ✔️ Helm이란? Helm이란, Kubernetes 패키지 관리를 도와주는 것(패키지매니저)으로, yaml 파일의 모음이라고 할 수 있다. Helm에 대한 많은 문서나 책에서 2버전을 다루고 있는데, 2버전은 더 이상 개발되지 않는다. 2버전은 3버전과 명령어도 다르고, 아키텍처 구조도 다르다. 아래의 그림이 버전2의 아키텍처로, 특히 가장 큰 차이점은 Helm Tiller의 여부이다. Helm Tiller는 Pod로, 버전2에서 사용되었다가, 여러가지 보안 문제로 버전3에서부터는 더 이상 사용되지 않는다. Tiller와 Client는 서로 gRPC로 통신을 했으나, 버전3부터는 Client에서 바로 API Server로 요청한..
[Kubernetes] kubectx, kubens 설치 및 powerlevel10 커스터마이징
kubectx란? 다중 클러스터 사용 시 클러스터 context 전환을 쉽게 해 주는 툴이다. kubens란? 쿠버네티스 클러스터 내에서 네임스페이스 변환을 쉽게 해 주는 툴이다. kubectx / kubens 설치하기 Github URL 👉 https://github.com/ahmetb/kubectx kubectx $ wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubectx $ sudo install kubectx /usr/local/bin 설치 확인 $ which kubectx /usr/local/bin/kubectx kubens $ wget https://github.com/ahmetb/kubectx/releases/downlo..