본문 바로가기

쿠버네티스

윈도우에서 쿠버네티스 구축하기 0. 개요윈도우에서 kubeadm을 사용해 쿠버네티스(k8s, kubernetes) v1.31를 구축하겠습니다. 두 대의 가상 머신을 만들어 한 대는 마스터 노드로 사용하고, 한 대는 워커 노드로 사용하겠습니다.가상 머신을 띄우기 위해 Vagrant와 VirtualBox는 아래 공식 홈페이지를 통해 다운로드 받으시길 바랍니다.https://www.vagrantup.com/ Vagrant by HashiCorpVagrant enables users to create and configure lightweight, reproducible, and portable development environments.www.vagrantup.comhttps://www.virtualbox.org/wiki/Download.. 더보기
KIND로 WSL 2에서 k8s 실행해보기 0. 개요KIND(Kubernetes IN Docker)는 Docker의 컨테이너를 노드로 사용해 k8s를 쉽게 구축할 수 있도록 하는 도구입니다.로컬에서 간단하게 k8s를 구축하여 테스트 하는 용도로 주요 사용합니다.이 글은 WSL 2 환경에서 k8s 구축 및 nginx를 배포하여 연결하는 실습을 해 보겠습니다. 1. KIND로 k8s 구축KIND를 설치하는 명령어는 아래와 같습니다.[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.21.0/kind-linux-amd64 쉽게 사용하기 위해 파일 권한 변경 및 파일 이동을 해 보겠습니다.$ chmod +x ./kind$ sudo mv ./kind /usr/local/bi.. 더보기
Kubeadm, Kubespary, kOps, Cluster API 설명 및 비교 0. 개요Kubeadm, Kubespray, Cluster API, kOps 모두 쿠버네티스(Kubernetes, k8s) 클러스터의 배포 및 관리를 위한 도구입니다.이 세 가지 도구를 설명 및 비교하겠습니다. 1. 각 도구 설명1.1 Kubeadm쿠버네티스 클러스터를 **부트스트랩(초기화)**하고 구성하는 도구입니다.의미 그대로 기본적인 구성 요소만 초기화하여 빠르고, 쉽게 클러스터를 구축할 수 있게 도와줍니다.💡 기본적인 구성 요소에는 API 서버, 컨트롤러 매너지, 스케줄러 등이 있습니다. Kubeadm에는 세 가지 중요 명령어가 있습니다.kubeadm init쿠버네티스는 컨트롤 플레인과 데이터 플레인으로 구분할 수 있습니다.이 명령어는 컨트롤 플레인을 초기화 합니다.kubeadm join데이터 .. 더보기
쿠버네티스 및 jMetter를 사용한 서버 부하 테스트 With 가상스레드 jMeter를 사용한 부하테스를 해 보았습니다. 1000명의 사용자(Thread)가 각 10번(Loop)씩 1초(Ramp-up)동안 요청을 보내는 경우 아래와 같았습니다.💡 Spring Boot의 default 쓰레드 풀의 쓰레드 개수는 200개 요청과 동시에 쿠버네티스의 노드 상황을 top 명령어로 확인해 봤습니다.💡 각 노드는 t3.large 서버(2코어 8GB의 램) 서버의 종류는 8개, 레플리카셋은 2였고, 파드 하나당 리소스 제한은 아래와 같습니다.resources: requests: cpu: 250m memory: 512Mi limits: cpu: 400m memory: 768Mi 위와 같이 리소스 제한을 했었는데, 막상 확인해 보니 절반 정도의 리소스들이 사용되지.. 더보기
파드 리소스 조정으로 속도 향상 쿠버네티스 도입 후 심각한 속도 저하 발생, 18초 정도까지 본 적 있습니다. 찾아보니 지나친 리소스 제한은 처리 속도의 제약을 가져다 준다는 글을 보게 되었습니다.[번역] 쿠버네티스에서 쉽게 저지르는 10가지 실수 [번역] 쿠버네티스에서 쉽게 저지르는 10가지 실수쿠버네티스를 사용하면서 쉽게 저지르는 10가지 실수에 대한 번역글입니다. 원글을 읽고 공감가는 부분이 많아 기록으로 남기고자 번역하였습니다.coffeewhale.com 현재 t3.large(2코어 8기가램) 노드를 세 개 쓰고 있습니다.서버의 종류가 약 8개이고, 각 3개의 레플리카 셋이 만들어지도록 설정했기 때문에 24개의 파드가 만들어집니다. 모든 서버를 안전하게 띄우기 위해 각 파드의 리소스를 아래와 같이 설정했습니다.resources:.. 더보기
리소스 부족과 eks scale 수정 1. 파드의 레플리케이션을 2에서 3으로 늘렸습니다.spec: replicas: 2 -> 3 2. 그러니, pod가 pending로 유지되고 로그를 확인하니 메모리가 부족하다고 나왔습니다. 3. 기존의 노드의 개수는 2이고, eks 설정시 k8s가 노드를 최대 3개를 가지도록 했지만, desired는 2라서 이런 상황에서는 자동적으로 노드가 늘어나지는 않는듯 했습니다. 4. 아래 명령어를 통해 desired을 수정했습다.# eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupNameeksctl scale nodegroup --cluster=eks-work-cluster --nodes=2 --name=eks-w.. 더보기
EKS로 ALB Ingress생성 시, ADDRESS가 비어있는 에러 1. 아래 yaml파일로 인그레스를 생성했습니다.apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: alb-ingress annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/group.name: alb-group alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/backend-protocol: HTTP alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/certificate-a.. 더보기
Windows에서 Helm bitnami 레포지토리 추가 방법 1. Helm 다운로드choco install kubernetes-helmhttps://docs.aws.amazon.com/eks/latest/userguide/helm.html Using Helm with Amazon EKS - Amazon EKSIf you get a message that openssl must first be installed, you can install it with the following command. sudo yum install openssldocs.aws.amazon.com 2. 버전 확인helm version 3. Helm 레포지토리 설정 (stable) helm repo add stable https://charts.helm.sh/stable 4. 레포지토리에서 .. 더보기