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

kubernetes 33

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를 생..

KnativeCon 2022 NA - Achieving a highly Available / Scalable Multi-Tenant Eventing backend - Eventing Scheduler

Achieving a highly Available / Scalable Multi-Tenant Eventing backend 영상: https://youtu.be/PKuUXaDl7w0 발표자료: https://knativeconna22.sched.com/event/1AGbi/achieving-a-highly-available-and-scalable-multi-tenant-eventing-backend-architecture-in-your-serverless-products-ansu-ann-varghese-aleksander-slominski-ibm 발표자 Ansu Varghese : IBM Senior SW Engineer within Hybrid Cloud Research. 현재 knative의 pul..

KubeCon 2019 - Istio Multi-Cluster Service Mesh Patterns Explained

https://youtu.be/-zsThiLvYos Multi cluster를 사용하는 이유는 여러 가지. Performance Cost (Dev for cheaper) Failover / Redundancy (Availability) 비즈니스적인 이유로도 멀티 클러스터를 요청하는 고객이 많았음. Secure Workload 외부 공격 방지 (attack vector) auditing of public internet traffic 기존 On-prem과 cloud 간 통신 pod to pod, cluster to cluster 통신에서 데이터 Security 간단한 cluster configuration 예시 각 클러스터에는 worker node pool이 존재함. (VM / Bare Metal 무관) ..

istio 개념 정리 (2) - VirtualService / DestinationRule / Gateway

Canaries 애플리케이션의 사용량이 많을수록 유용한 기능. 사용자가 많은 애플리케이션에서 새로운 버전을 100% 바로 배포할 경우 발생할 수 있는 리스크를 줄일 수 있음. istio 없이 Kubernetes component로 Canary 적용하기 Single Service에 multiple pod를 연결하는 것이 가능함. deployment에 Label 붙이고, service에서 matchLabel로 pod 선택하는 게 가능하기 때문 k8s의 load balancing은 기본적으로 round robin. 따라서 위 그림과 같은 상황이라면, new version (staff-service:6)은 전체 트래픽의 33%를 점유하게 됨 대신, 이 방법은 traffic의 %를 변경하려면 그만큼 pod 비율을..

istio 개념 정리 (1) - Service Mesh와 istio

Istio Istio : Service Mesh의 한 종류. Service Meshcluster-based MicroService 프로젝트가 많아지면서, k8s와 같은 Orchestration tool만으로는 기능 요구사항을 맞추기 어려워지며 대두된 서비스.일종의 Extra Layer of Software that you deploy alongside k8s.Multiple Software Components가 서로 통신하고 연결되어 있는 Distributed Architecture라면 사용할 수 있음. 반드시 K8s 환경에서만 쓰이는 게 아님. 예시를 위한 도식. 각 Microservice에는 pod가 있고, 보통 하나의 pod에는 하나의 Container가 있다. 각각의 microservice는 Se..

Fluentd 정리: Open Source Log Data Collector

https://www.youtube.com/watch?v=5ofsNyHZwWE Why we Need Logs? k8s에 여러 MicroService 앱이 배포되어 있다고 가정하자. nodejs / python postgres DB RabbitMQ 각각의 앱은 "어떤 동작을 하고 있는지" 로그를 생성한다. 로그는 보통 아래 세 가지 목적으로 쓰임. Compliance Security Debugging How Application Logs data? Write to files. 일반적인 방식. 단, 로그데이터 분석에는 제약이 따름. UI나 visualization tool 없이는 cross application log 확인도 어려운 편 로그마다 format도 다름 (timestamps, log level 등..

학습일지 2022.08.03

if kakao 2021 - k8s Cluster 확장, 어디까지 알아보고 오셨어요?

https://if.kakao.com/session/119 if(kakao)2021 함께 나아가는 더 나은 세상 if.kakao.com Multi-IDC 구축하면서 SLA 확보하기 위한 시도들. 카카오페이는 현재 800여 개 이상의 microservice를 k8s에서 운영중. 장애가 날 만한 상황은 예방하기 + 안정적으로 운영 가능한 아키텍처 구축이 필요함. k8s 운영 시 발생할 수 있는 위험요소들을 정리한 영역 k8s cpu 관련 이슈 : limit / 쓰로틀링 리눅스 커널 업데이트, pod 개수와 성능 보장 등 istio 관련 이슈 - 카카오페이는 service mesh로 istio 쓰는가 보다 프로토콜 선택 관련 이슈 citadel 인증서 기한 만료 envoy의 hot restart fail 이슈..

강연 2022.06.02

CKA 자격증 합격 후기 + 준비했던 방법 정리

최종 소요 기간: 3개월. udemy 강의에 2개월 / 문제풀이 1개월. 100점 만점에 17문제, 문제당 배점은 4, 7, 13점 중 하나였음. 인터넷에서는 killer shell 문제보다는 쉽다는 평이 많은데, 체감상 그렇지 않았음. podAntiAffinity 같은 생소한 문제를 요구하지 않았을 뿐, 전체적으로는 비슷한 난이도였다. 배점이 낮은 4점 문제는 한두 가지의 명령어로 결과를 만들 수 있는 문제가 많았다. 'deployment의 pod 개수를 4로 scale 변경해라' 'taint toleration 걸려 있는 노드 제외하고, available 상태인 노드 개수를 /opt// 에 입력해라' pod 컨테이너 로그 중 특정 문자열이 있는 row만 추출해서 저장해라 7점 문제가 체감상 갯수는 제..

일상 속 생각 2022.05.23