공부하고 기록하는, 경제학과 출신 개발자의 노트

kubernetes 40

KubeCon2024 - Scaling New Heights with KEDA: Performance, Extensions, and Beyond

https://youtu.be/_5_njiPr5vg?si=W0MJDjYMbLMRYPU5 발표자Jorge Turrado: SCRM에서 SRE 담당. KEDA maintainerZbynek Roubalik: Kedify CTO, Knative TOC, KEDA maintainerEnterprise Autoscaling platform for our customers. Data Processing 관점에서, 한번에 데이터 처리가 많이 필요한 경우 / 그렇지 않은 경우가 있다. 리소스 효율화를 위해서라도, 필요한 순간에만 애플리케이션이 실행되면 좋을 것 같다.HPA: target workload의 CPU / Memory 확인해서 autoscale. 단, 리소스 사용량과 Actual Need이 다른 경우 사용하기..

KubeCon2022 - KEDA - Real Time and Serverless Scaling in Kubernetes

https://youtu.be/vjKLbfEZ7MU?si=X_RLkD6Ww5ij7MJp   발표자Jeff Hollan: Snowflake Product Director. 그전엔 MS에서 Azure Function Lead로 10년 정도 일했었고, KEDA founding memeber.Zbynek Roubalik: RedHat Engineer. KEDA founding member. Knative maintainer. 예컨대 KubeCon에 참여한 모든 사람들에게 피자를 제공해야 한다고 하자.Strategy 1: 피자가 부족할 때마다 한 판씩 주문한다.Strategy 2: 참여자가 얼마나 있는지 확인해서, 예상되는 양을 미리 주문한다.Strategy 1을 쓰면, KubeCon 참가자가 많을 경우 뒷사람은..

Kubernetes Autoscaling: HPA, VPA, KEDA, CA, Karpenter, Fargate

https://youtu.be/hsJ2qtwoWZw?si=K1sRyOkeJotnkdh5     k8s는 run application at scale이 가능함. built-in으로 제공되는 autoscaler / 추가로 설치하는 것까지 종류가 다양하다.낮에 트래픽 많고 밤에는 적은 이커머스 사이트라거나ETL 수행이 끝나면, 작업에 사용한 리소스를 반납해서 비용을 줄인다거나 일반적으로는 scale을 위해 pod를 증가시키는데, k8s 클러스터 리소스에 여유가 없을 경우 node를 증가시켜야 한다.따라서 autoscale할 대상이 pod인지 node인지 구분해서 설명한다.HPA k8s CRD 방식으로 구현. k8s Controller plane을 사용함.CPU / Memory 사용량에 따라 Deployment..

KubeCon2024 - Comparing Argo Workflows and Airflow in a distributed environment

https://youtu.be/IirxP-a14HU?si=29vjK7bjE2_ZnSzO  ML 파이프라인 구축이 필요하거나Data, Batch Processing이 필요하거나Infrastructure Automation이 필요하거나Workflow Management tool은 있으나 K8s-native Soluction을 들어보고 싶거나 Workflows 작업을 DAG 형태로 정의할 수 있음. Graph의 node는 task (작업) 을 의미한다.k8s Native, container-based, yaml-basedPython SDK 제공Dynamic Workflows Argo cli 또는 web ui로 workflow 정의하고 실행할 수 있다.api client 또는 argo event로 trigger..

KubeCon2024 - Demystifying Argo Workflows: Architectural Deep Dive

Demystifying Argo Workflows: Architectural Deep Divehttps://youtu.be/FBRMURQYbgw?si=ThzZoEeIH2HCdVez    CRD, Workflow Controllers, Argo Server 등 Argo Workflows를 구성하는 컴포넌트들 소개 / 설명. Workflow: Defines a Set of Actions.Action을 Sequence / Parallel / Combinations of Both 등 다양한 형태로 실행할 수 있음.Workflow가 다른 Workflow를 실행한다거나, task 간 dependency가 걸려 있는 형태의 작업도 수행 가능.Argo는 DAG / Graph 형태로 실행.사용자는 argo Workflo..

KubeCon2024 - Mastering Argo Workflows at Scale - A Practical Guide to Scalability Excellence

https://youtu.be/grDJ3o2VLUE?si=lgxulUyVNYCDyEOS   발표자Tim Collins: Argo Maintainer 4년차Alec Stonsell: Argo Maintainer 6개월차 본인들 회사 소개Argo 기반 서비스 제공 / 인프라 관리해주는 곳. multi cluster serving 같은 거 쉽게 해주겠다.데이터사이언스 회사에서 Argo 쓰고 있다.파이프라인 실행 -> 2주마다 5천억 개 record 발생mobility pattern 탐지하는 알고리즘 수행16시간 실행되는 long process문제점?Unreliable / Could be faster / 뭐가 어떻게 돌아가는지 파악하기 쉽지 않았음.어떻게 해결했는지를 소개하고자 함. 어떤 고생을 했고, 어떤 결..

Naver Engineering Day 2024 - Kubernetes에서 DNS 다루는 방법

https://d2.naver.com/helloworld/2905424  https://youtu.be/1UBgSARBdBc?si=07YbUP3GK5zpnGjT   문제 k8s 클러스터 운영 도중, 일부 노드에서 특정 도메인 nslookup이 안 되는 현상 발생.원인: 해당 노드들의 망 구성이 달라서, 다른 nameserver 사용중이었음. nameserver는 변경할 수 없는 상황.특정 도메인일 경우에만 nameserver를 다르게 설정하려면 어떻게 해야 하나??간단한 k8s 배경지식 pod는 고유한 ip를 갖는다.pod는 동적으로 생성되며, 언제든 삭제될 수 있다. 재생성될 때, ip는 동적으로 변경된다.Service를 사용해서, 동적으로 바뀌는 ip 집합인 여러 pod에 접근할 수 있는 단일 end..

KubeCon 2020 - Kubernetes Leader Election for Fun and Profit

Kubernetes Leader Election for Fun and Profit Nick Young, VMware 소개할 내용은 세 가지 What is Leader Election & how do you implement Guides for using it Common Patterns What is Leader Election k8s는 API server에서 쓰는 leader election code를 사용자의 controller에서도 쓸 수 있게 지원하고 있다. Elect 1 instance as a leader. only 1 instance can make changes. 사용할 수 있는 기능으로는 write changes back = Controller Pattern 클러스터 외부에서 작업을 수행..

kubernetes Dynamic Informers with client-go

Watching Kubernetes custom resources with dynamic informers & golang https://youtu.be/fBY8sVVjM2s k8s Operator를 만들 때, CRD의 reconcile 로직을 적용하기 위해 Get / List Loop를 쓰는 경우가 있다. ineffective / slow way to find changes. 예컨대 리소스가 backoff 상태라면 Get / List 요청을 보내는 주기가 갈수록 느려진다. 리소스가 많을 경우 pagination 등... 고려할 것들이 늘어남 client go에서 제공하는 (shared) cache를 사용해서 보완하기도 함 위의 방식들보다 더 나은, InformerFactory를 사용해서 Watcher를..

if kakao 2022 - Kubernetes Controller를 위한 테스트코드 작성

https://youtu.be/B80-GByJFEA Controller : Loop 돌면서 클러스터의 상태를 확인하고, 상태 변화 / 유지에 필요한 작업을 Request 보내거나 직접 수행하는 컴포넌트. 대표적인 예시가 replicaSet. ingress-nginx controller는 http routing rule 설정을 담당. 하나의 클러스터가 연관된 여러 리소스의 상태를 체크하고 유지시켜준다는 점에서는 편리함 controller 로직에 문제가 있을 경우 연관된 리소스가 전부 영향을 받을 수 있다는 단점이 있음. 그러므로 테스트코드 작성이 중요함. 예시: 간단한 CRD와 Reconcile 로직 - BlueGreen CRD 아래 예시는 BlueGreen이라는 CRD를 관리하는 Controller를 생..