[k8s] Pod의 생명주기
·
Kubernetes
오늘은 쿠버네티스의 가장 작은 단위인 Pod의 생명주기를 이해하며 클러스터에서 애플리케이션이 어떻게 동작하고 관리되는지  이해해보려 합니다. Pod는 여러 상태를 갖고 있습니다. 사실 Pod의 상태변화에 대한 일반적인 관심은 보통 '왜 장애가 났는가'로 귀결되고는 합니다. 이런 경우 kubectl describe 명령을 통해 원인에 대해 파악하려는 시도를 합니다. 하지만 왜 장애가 났는 지 이전에 어떤 과정으로 장애가 발생하는 지 이해한다면 장애지점에 대해 유추할 때 보다 넓은 시야를 가질 수 있을 것이라 생각합니다. Pod의 상태Pod는 생명주기 중 딱 한번만 스케줄링됩니다. Pod가 특정한 Node에 스케줄링되고 나면, 해당 Pod는 중지되거나 종료될 때까지 스케줄링되지 않고 해당 Node에서 실행..
[AWS] 실시간의 실시간 - CloudFront, Amazon Kinesis Data Streams
·
개발
이번 포스팅에서는 Cloudwave교육과정 최종 프로젝트로서 올리브영 시스템을 구축하는 과제를 진행하며 제안한 개선사항에 대한 내용을 다루겠습니다.1. 요구사항 정의썸네일과 같이 올리브영의 현재 시스템 중에는 실시간 랭킹이라는 기능이 있습니다. 이는 앱에서만 지원하는 기능인 것으로 확인이 됩니다(아마도..!) 해당 기능은 현재 어떤 상품이 인기가 있는 지 보여주는 역할을 합니다. 하지만 이 기능을 보면 볼수록 한가지 의아한 부분이 있었습니다. 바로 실시간이라고 하지만 사실 그 랭킹은 몇 시간 전에 업데이트 된 랭킹일 수 있다는 점이었습니다. 저는 실시간이라는 키워드와 2시간 전 업데이트라는 키워드가 이중적이라고 생각했습니다. 그렇다면 올리브영은 왜 몇 시간 전 상품에도 실시간이라는 키워드를 넣어야만 했을..
[kubernetes] Traefik에 대해 알아보자!
·
Kubernetes
지난 시간 k3s로 클러스터를 구축했습니다. k3s를 설치할 때 몇가지 리소스들이 함께 설치되는데요. 그 중에 Ingress Controller로써 사용되는 Traefik이 있습니다. 오늘은 이 녀석에 대해 알아보겠습니다.Ingress Controller란?Ingress Controller는 Ingress라는 리소스에 맞춰 로드밸런서를 요청대로 설정하는 역할을 수행합니다. 이때 로드밸런서는 쿠버네티스 Pod 형태로 제공되는 로드밸런서나 클라우드에서 제공하는 로드밸런서(AWS ALB Controller의 경우)로 구성할 수 있습니다. 각기 다른 로드밸런서에는 다른 Ingress Controller가 필요합니다.Ingress의 가장 기본적인 역할은 L7 Layer에서 트래픽을 관리하는 것입니다. Ingres..
[Kubernetes] k3s로 경량화된 kubernetes 환경 구축하기
·
Kubernetes
오늘은 k3s로 싱글 노드 클러스터 환경을 구축한 경험에 대해 공유드리고자 합니다.왜 k3s?본격적인 Kubernetes 환경을 구축하기에 앞서 k3s 를 채택한 이유에 대해서 언급하고 넘어가겠습니다. 필자는 이제 막 쿠버네티스에 입문한 초심자입니다. 불과 한달 전까지는 짧은 교육을 들으며, 덕분에 돈 걱정하지 않고 EKS 환경에서 마음껏 꿈을 펼쳤습니다. 수료 후 CKA 자격증을 취득하며 Udemy 강의에서 제공하는 실습 환경에서 부담갖지 않고 학습했습니다.(샤라웃 뭄샤드 형님👍)하지만 이제는 스스로 학습하기 위한 환경을 구축해야 했습니다. 관리형 kubernetes 서비스는 너무 비싸고, 제 맥북에 가상머신 여러 개 띄워서 멀티 노드 클러스터를 구축하자니 공간이 넉넉치 않았습니다. 이에 따라 집에..
[k8s] Kubernetes에서 서비스에 외부 접근 제공하기: NodePort, LoadBalancer, Ingress
·
Kubernetes
Kubernetes 클러스터는 보안을 위해 외부 네트워크와 격리되어 있습니다. 클러스터 내부 서비스에 외부에서 직접 접근하는 것은 기본적으로 허용되지 않습니다. 그럼에도 불구하고 현실적인 서비스 운영을 위해 외부에서 클러스터 내부 서비스에 접근해야 하는 상황이 필요합니다. 단적인 예시로 Pod로 띄운 API 서버에 대한 요청도 외부에서 내부로 접근하는 상황이 그러할 것입니다.  쿠버네티스에서는 이런 상황에서 즉, 클러스터 외부에서 내부 서비스에 접근할 수 몇 가지 방법을 제안합니다. 그 전에 서비스 타입에 대해  간단하게 알아보겠습니다.서비스 타입의 이해쿠버네티스에서는 워크로드를 일련의 Pod 집합 내에서 실행합니다. 모든 파드는 클러스터 안에서 IP를 부여받게 되며, 이 가상 IP는 쿠버네티스 클러스터..
[Spring Boot] 예약 알림을 위한 동적 스케줄링(with. TaskScheduler)
·
개발
해당 포스팅은 프로젝트 팀블로그에 제가 작성한 글을 옮긴 기록입니다. 언제 팀블로그가 사라질 지 모르기에..모두의 택시 팀블로그 안녕하세요, [모두의택시] 팀 서버 개발자 박성훈입니다.이번 포스팅에서는 우리 서비스에 예약 알림 메시지 전송을 구현하기 위해 겪었던 시행착오에 대해 공유드리고자 합니다.1. 요구사항 정의 [모두의택시] 에서는 채팅 기능이 있습니다. [Spring Boot] WebSocket & Stomp & Redis pub/sub & FCM으로 개발하는 채팅기능안녕하세요, [모두의택시] 팀 서버 개발자 박성훈입니다.이번 포스팅에서는 우리 서비스에 채팅 기능 개발,도입을 위해 겪었던 시행착오에 대해 공유드리고자 합니다.1. 요구사항 정의택시 동승modutaxi-tech.tistory.com ..
훈
훈의 기술노트