IT 56

AWS Elastic Load Balancer 에 대해서 (feat. NLB, ALB, CLB 차이점과 가격)

AWS Elastic Load Balancer에 대해서 알아보자. AWS Elastic Load Balancer란? 간단하게 설명하면 외부에서 들어오는 트래픽을 분산해주는 시스템이다. 왜 사용할까? 통합된 인증서 관리 Application의 Single Point of Access (단일 접속지점) 제공 인스턴스(서버)의 상태 확인 및 Seamless한 처리 Auto Scaling Group 등과 연동하여 고가용성 구성 각 제품별 특징을 살펴보자. 1. ALB (Application Load Balancer) 아래와 같이 Routing Rule을 추가할 수 있다. Path, Header, Source IP 등에 따라서 Forward, Redirect, Return fix response 등을 수행할 수 ..

IT/Public Cloud 2022.03.08

kubernetes pod debugging 방법 5가지

kubernetes 를 사용하다보면 pod 를 debugging 할일이 있다. 일반적으로 application을 디버깅을 하기 위해서는 application이 실행되는 서버에 접속해서 로그를 확인거나, application의 api를 호출해야 한다. 그런데, kubernetes에서는 대부분의 pod들이 클러스터 내에서만 접속이 가능하기 때문에 외부에서 접속하거나, api를 호출할수 없는 경우가 상당수이다. 1. pod가 정상적으로 실행되지 않을때 - kubectl decribe kubectl describe po [pod 이름] pod가 실행되기전 에러가 발생한다면, describe 명령을 사용한다. pod가 왜 정상적으로 실행되지 않았는지 원인을 추정해볼수 있다. 마지막 출력내용을 보면 에러가 발생한 ..

IT/Kubernetes 2022.03.06

CKA (Certificate Kubernetes Administrator) 자격증 시험준비부터 합격까지

회사 업무상 Kubernetes 를 사용할 일이 있어서, CKA 자격증 시험을 준비했다. 올해 1월초부터 준비했고, 3/1 시험을 보고 합격했으니 총 2개월 정도 걸린것 같다. 준비과정부터 학습한 내용 및 시험결과까지 대체적으로 만족스러웠다. 배경 일단 나는 개발자 백그라운드로 shell 이나 CLI 사용법에 익숙했고, Container의 기본적인 개념이나 Docker 사용정도는 가능한 상태였다. Kubernetes를 사용해본적이 없었고, 이번 자격증 시험을 준비하면서 실제 사용은 처음 해봤다 (CKA 시험 준비의 목적이었다) 시험준비 먼저 자격증에 대해서 잘 이해하기 위해서 인프런 CKA 자격증 소개 강좌를 들었다. 무료이고 길지 않기 때문에 CKA 자격증에 대해서 자세히 알고 싶다면 한번 들어보기를 ..

IT/Kubernetes 2022.03.03

EC2에서 Docker 이미지 ECR private 에 push 하기

본 글은 링크를 기본으로 설명하되, 일부 에러가 발생한 부분은 수정하였다. EC2 의 docker 이미지를 ECR private repository 에 push 해보자. 이를 위해서는 아래와 같은 단계를 수행해야 한다. 사전준비 ECR private repository 생성 EC2내 Docker 설치 EC2에 ECR 접근권한 부여 Docker 클라이언트 인증 이미지 push 1. 사전준비 1-1) ECR private repository 생성 콘솔에서 손쉽게 생성이 가능하다. 링크를 참고한다 1-2) EC2내 Docker 설치 아래 명령어를 사용해서 EC2내 docker를 설치한다. sudo yum -y update sudo yum -y install docker docker-registry 1-3) E..

IT/Public Cloud 2022.02.26

kubernetes woker node 장애가 발생한다면 kubelet 을 살펴보자

아래 그림은 kubernetes architecture 이다. 기본적으로 각 worker node(=Compute machines) 에는 kubelet과 kube-proxy가 존재하는데, 이중 kubelet에 대해서 좀더 자세히 살펴보자. kubelet 이란? 클러스터의 각 노드에서 실행되는 에이전트. Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리한다. Kubelet은 다양한 메커니즘을 통해 제공된 파드 스펙(PodSpec)의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 건강하게 동작하는 것을 확실히 한다. Kubelet은 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않는다. [출처] https://www.redhat.com/ko/topics/containers/kubernete..

IT/Kubernetes 2022.02.23

쿠버네티스 pod가 실행되는 node 선택하기 (feat. nodeName, taint, affinity, toleration)

pod를 특정 node에서 실행시시켜야 하는 경우가 있다. (GPU 등 특정 HW가 있는 node거나, node별로 용도가 구분되어 있는 경우) 이를 위한 쿠버네티스의 기능을 정리해봤다. 1. node 이름으로 선택하기 - NodeName apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx nodeName: kube-01 가장 단순한 방법이다. pod의 spec에 nodeName을 정의하면 해당 node에서 실행된다. 다만 nodeName과 일치하는 node가 없을 경우 자동으로 삭제되는 등 아래와 같은 제약이 있어서 잘 사용되지는 않는다. (실제로 잘못된 nodeName으로 pod를 스케줄링..

IT/Kubernetes 2022.01.20

쿠버네티스 cpu, memory 관리하기 (feat. 사용량 확인, limit, 리소스 모니터링)

pod가 실행되기 위해서는 cpu, memory 가 필요하며, 이는 pod가 실행되는 node의 리소스를 사용한다. 쿠버네티스는 각 pod가 얼만큼의 리소스(cpu, memory)가 필요한지에 따라, 실행될 node를 적절히 선택한다. 따라서 각 pod가 필요한 리소스를 적절하게 설정해줘야 효율적으로 node의 리소스를 활용할 수 있다. 여기서는 이처럼 pod가 필요한 리소스를 설정하고, 현재 사용되고 있는 리소스를 관리, 모니터링 할 수 있는 방법을 알아본다. 1. Pod가 필요한 cpu, 메모리 (Requests, Limits) pod의 spec.containers[].resources 에 아래와 같은 4개 정보를 설정해야 한다. requests와 limits 이라는 항목이 있으며, 각각 cpu, m..

IT/Kubernetes 2022.01.16

쿠버네티스 ReplicaSet 사용법 (scale, 삭제, pod 제외)

ReplicaSet 이란? 레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. [출처] https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicaset/ 쉽게 정리하면, 가용성의 위해 동일한 파드의 개수를 유지하는 기능이다. 예를 들어 A라는 pod의 개수를 3개로 유지하기로 설정했다면, Node가 다운되어 pod가 사라져도 다른 Node에 pod를 자동으로 생성해서 pod를 3개로 유지하고, 다른 운영자가 pod 를 실수로 지우거나 새로 생성하더라도 쿠버네티스 자체에서 pod의 개수가 3개가 되도록 지속적으로 유지한다. Re..

IT/Kubernetes 2022.01.15

쿠버네티스에서 pod를 생성하는 3가지 방법 (run, create, apply)

1. kubectl run 가장 간단하게 pod를 만드는 방식이다. create, apply 명령어는 pod 의 정보가 기록된 yaml 파일을 활용해 pod를 만드는 반면, run 명령어는 실행 커맨드에 각종 정보를 입력해서 생성한다. 가장 간편하지만 실행시 입력한 정보가 남지 않는다. 따라서 재실행하기가 어렵고 문제가 발생했을때 원인을 찾거나 해결방법을 공유하는 등이 불편하다. 테스트나 간단한 pod를 생성할때는 유용하겠지만, 많은 configuration을 활용한다면 사실상 yaml을 작성하는게 더 편리할 수 있다. 2. kubectl create yaml을 통해서 pod를 만드는 방식이다. apply와 가장 큰 차이점은 기존에 동일한 pod가 있을경우 에러가 발생한다는 것이다. pod 실행시 입력한..

IT/Kubernetes 2022.01.11

EC2 인스턴스 타입 변경, EBS 볼륨 확장 및 축소

성능, 비용 등의 이슈로 EC2 인스턴스 타입을 변경하거나 EBS 볼륨을 확장 및 축소해야 하는 경우가 있다. 1. EC2 인스턴스 타입 변경 인스턴스 타입변경은 AWS에서 관련 기능을 제공하며, 무중단으로는 불가하다 (EC2 상태가 stopped 인경우만 가능). 인스턴스 타입변경을 위해서는 이를 위해서 아래를 수행해야 한다. 1) EC2 인스턴스 Stop 인스턴스 타입변경은 Stop 상태일때만 가능하다. 이를 위해 Stop 상태로 변경한다. 인스턴스 선택 -> Actions -> Instance state -> Stop instance 2) 인스턴스 타입 변경 인스턴스 선택 -> Actions -> Instance settings -> Change instance type -> 원하는 인스턴스 타입 ..

IT/Public Cloud 2022.01.07
반응형