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

학습일지/kubernetes 27

KubeCon2023 - Building Better Controllers

https://youtu.be/GKPBQDJ2Hjk?si=DMB5DbmgD64ohT6I 발표자: John Howardworking on istio for about 5 years, mostly on control plane.istio라는 big Control plane 개발하고 관리하면서 겪었던 controller 이슈를 어떤 식으로 해결했는지 소개.What is Controller? Controller를 거칠게 정의하면 'input을 넣었을 때, 대응되는 output을 내뱉는 것'Deployment yaml을 배포하면, Replicaset이 만들어진다.Replicaset이 배포되면, pod가 만들어진다.pod가 만들어지면, service에서 pod 생성이벤트 감지하고 적절한 endpoint를 배포한다...

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

ContainerDays 2021 - Into the Core of Kubernetes: the internals of etcd 정리

영상: https://youtu.be/YIBQrP1grPE 발표자: Michael Gasch (VMware) 발표자분이 따로 정리했던 글: https://www.mgasch.com/2021/01/listwatch-part-1/ Onwards to the Core: etcd A journey to the core behind the Kubernetes ListerWatcher interface www.mgasch.com kubernetes 아키텍처 설명 k8s에서 쓰는 etcd Data model k8s Controller / operator에서 etcd를 어떻게 사용하는지 k8s는 크게 세 개의 레이어로 구분할 수 있다. Control Plane: Controller Manager, Scheduler, ..

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 이슈hot res..

CKA 대비 kubernetes 스터디 - 8. Networking (2)

Networking Cluster Nodes k8s cluster는 여러 개의 노드 - 마스터 노드, 워커 노드 - 가 network interface로 연결되어 있는 형태. 각각의 노드에는 ip address가 매핑되어 있어야 하고, unique hostName이 있어야 하며, 고유한 Mac Address 값이 있어야 한다. 기존 VM을 복사해서 노드를 생성할 때 특히 유의할 부분임. kubernetes 컴포넌트를 실행하고, 컴포넌트 간 통신을 위해 열려 있어야 하는 포트들. https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/#steps-for-the-first-control-plane-node ..

CKA 대비 kubernetes 스터디 - 8. Networking (1)

알아둬야 할 Linux Networking Prerequisite 내용. Basics : Linux Networking A가 B에게 통신하려면? Switch에 연결한다. -> switch는 두 개의 시스템을 연결하는 네트워크를 생성한다. switch에 연결하기 위해서는, 각 호스트가 사용해야 할 인터페이스가 있다. ip link 명령어로 해당 PM / VM의 인터페이스를 확인할 수 있다. 예컨대 예시의 경우 eth0 이라는 이름의 인터페이스가 확인됨. switch 내부의 네트워크가 192.168.1.0 이라고 가정한다면, 두 개의 컴퓨터 A와 B는 아래의 명령어를 사용해서 switch 내부의 네트워크에 자신의 정보를 등록할 수 있다. ip addr add 192.168.1.10/24 dev eth0 ip..

CKA 대비 kubernetes 스터디 - 7. Storage

Docker Storage 크게 두 가지 개념이 있다. Storage Driver docker는 데이터를 어디에 저장하는지, container에서 fileSystem을 어떻게 관리하는지. docker image를 실행하면, /var/lib/docker 라는 경로를 컨테이너 내부에 생성한다. aufs, containers, image, volumes 등 하위 경로도 같이 만들어진다. 여기까지가 docker에서 흔히 말하는 'data' 필드. Docker의 Layered Architecture dockerfile의 맨 윗줄부터 하나씩 레이어를 쌓아가면서 이미지를 생성한다. 각 레이어는 이전 레이어에서 추가된 내용만을 저장하며, 로컬에 캐시된다. 따라서, 비슷한 dockerfile을 빌드하게 될..