Kubernetes 12

쿠버네티스 Auto Scaling #2 (CA, Karpenter)

서론 앞서 쿠버네티스 Auto Scaling #1 (HPA, VPA)에서 Pod에 대한 Auto Scaling을 다뤘다. 당연한 얘기지만 충분한 Pod를 배치하기 위해선 그에 맞는 Node의 리소스가 받쳐줘야 한다. 그렇다고 확장될 경우를 대비하여 미리 용량이 큰 노드를 준비해놓는다면 리소스 낭비로 이어지기 때문에 적절한 시기에 필요한 만큼 확장/축소시켜 트래픽을 처리하는 것이 바람직하다. 이때 활용할 수 있는 것이 바로 클러스터 오토스케일링 기능이다. (참고로 EC2 타입별 띄울 수 있는 최대 Pod 개수는 정해져있다. 링크) 클러스터의 오토스케일링을 위한 솔루션에는 크게 Cluster Autoscaler, Karpenter 이외에도 nOps의 Compute Copilot, CAST AI, NeApp ..

Kubernetes 2024.03.11

쿠버네티스 Auto Scaling #1 (HPA, VPA)

쿠버네티스는 한정된 리소스를 유연하게 사용하기 위해 Auto Scaling 기능을 지원하고 있습니다. Auto Scaling은 각 리소스에 대한 Metric 정보을 기반으로 동작하며 데이터를 수집하기 위해선 먼저 클러스터에 Metric Server가 구성되어 있어야 합니다. Metric Server 배포하기 메트릭 서버는 클러스터 내 존재하는 Pod의 메트릭 정보를 실시간으로 수집해서 Kubernetes API 서버에 전달하는 역할을 수행합니다. 만약 메트릭 서버가 설치되지 않았다면 아래와 같이 'Metrics API not available'과 같은 에러가 표시됩니다. 설치 방법은 간단합니다. 아래 명령어를 통해 메트릭 서버 구성요소를 배포해줍니다. $ kubectl apply -f https://gi..

Kubernetes 2023.11.20

Helm 인강 정리

간단한 실습으로 nginx 서버를 설치했고, 인프런 강의에서 배운 내용을 정리한다. tomcat 설치 bitnami/tomcat 차트를 이용하여 tomcat 서버를 설치한다. default로 설치 시 Persistent Volume을 사용하게 되는데 persistent.enabled 옵션을 false로 사용하면 PV를 사용하지 않게 된다. mzmz01:~/.kube $ helm install my-tomcat bitnami/tomcat --set persistent.enabled=false,tomcatAllowRemoteManagement=1 Artifact Hub에서 설명하는 tomcatAllowRemoteManagement 옵션은 아래와 같다. default는 0(disabled)으로 설정돼있기 때문..

Kubernetes 2021.10.08

Helm Chart를 이용하여 nginx 설치하기

실습 환경은 Cloud9에서 진행하며, Helm 설치는 간단히 설명한다. Helm 설치 아래 명령어를 통해 Helm CLI를 설치한다. $ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash Downloading https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz Verifying checksum... Done. Preparing to install helm into /usr/local/bin helm installed into /usr/local/bin/helm helm version을 입력하면 설치된 버전 이외에 WARNING 문구가 표시된다. 오류를 보면 ...

Kubernetes 2021.10.08

Helm이란?

Helm은 쿠버네티스 패키지 매니저이다. Helm Chart 흔히 Helm 차트를 작성한다고 하는데 여기서 '차트' 란 Helm의 패키지 포맷이다. 하나의 애플리케이션을 설치하기 위한 파일들로 구성돼있는데, 예를 들어 tomcat 서버를 설치하기 위한 쿠버네티스의 Pod, Service, Deployment를 위한 YAML 파일 등을 포함한다. Template, Value Helm은 기본적으로 템플릿의 개념을 사용한다. 아래 예제처럼 AWS에서 VPC, S3 등의 리소스들을 빠르게 구성하고 싶을 때 yaml 파일 내에 관련된 리소스들을 정의해서 CloudFormation 서비스를 통해 한 번에 구성하곤 하는데, 이 때 사용하는 yaml 파일이 템플릿과 같다. Helm 또한 템플릿 파일을 만들어놓고, Va..

Kubernetes 2021.10.01

Kubernetes 오브젝트를 이용한 Apache 웹 서버 구성하기

목표 Kubernetes를 활용하여 아파치 웹 서버를 구축한다. 설치 환경 웹 서버 설치 환경은 Ubuntu 20.04.2 LTS이다. 구성 과정 1. 오브젝트 구성 2. Probe 구성 3. Replicaset 생성 4. Load Balancer 생성 1. 오브젝트 구성 httpd 이미지를 통해 오브젝트를 구성한다. vagrant@kube-control1:~$ kubectl run httpd --image httpd pod/httpd created 2. Probe 구성 컨테이너를 주기적으로 진단하기 위한 프로브를 구성한다. 프로브는 크게 startupProbe, livenessProbe, readinessProbe로 구분한다. startupProbe startupProbe가 선언돼있으면, 진단이 통과되..

Kubernetes 2021.09.07

Kubeadm을 이용한 쿠버네티스 클러스터 배포하기

목표 k8s 설치와 버전 업그레이드, node를 제거하고 추가하는 방법을 설명한다. 설치 환경 쿠버네티스 설치 환경은 Ubuntu 20.04.2 LTS 이다. 설치 과정 1. Kubernetes 설치 2. 클러스터 구축 kubernetes 설치 패키지 업데이트를 수행하고 Repository를 추가한다. vagrant@kube-control1:~$ sudo apt-get update vagrant@kube-control1:~$ sudo apt-get install -y apt-transport-https ca-certificates curl #구글 클라우드의 사이닝 키 추가 vagrant@kube-control1:~$ sudo curl -fsSLo /usr/share/keyrings/kubernetes-a..

Kubernetes 2021.09.07

Kubernetes 인강 정리

kubectl 명령어를 이용한 Container 쉘 접속하기(한 개 컨테이너의 경우) vagrant@kube-control1:~/tmp$ kubectl exec --stdin --tty hello-pod /bin/bash 멀티 컨테이너의 경우 vagrant@kube-control1:~/tmp$ kubectl exec --stdin --tty pod-1 -c container2 /bin/bash Service를 만들어서 외부에서도 접속이 가능하게 할 수 있다. Pod의 labels: 부분과 selector: 부분이 매칭되어 Service와 Pod를 연결할 수 있다. apiVersion: v1 kind: Service metadata: name: hello-svc spec: selector: app: hel..

Kubernetes 2021.08.20

EKS를 활용한 웹 애플리케이션 배포하기

이번 포스팅은 '클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트'의 교재 내용을 바탕으로 Amazon EKS를 활용하여 쿠버네티스 클러스터 환경을 구축하고, 예제 애플리케이션을 배포하는 과정을 설명한다. VPC 생성하기 먼저 로컬에서 git 레포지토리를 다운로드 받는다. [CloudFormation]에서 /k8s-aws-book/eks-env/01_base_resources_cnf.yaml 파일을 업로드하여 스택을 생성한다. 여기서 주의할 점은 공유 계정으로 실습 시 아래 [ClusterBaseName]이 같으면 VPC 생성 시 오류가 발생하므로 이 부분은 각자 다르게 생성한다. ClusterBaseName이 동일하면 아래와 같이 CREATE_FAILED가 뜬다. 검토까지 변경할 사항은 없으며 그대로 ..

Kubernetes 2021.08.16