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

kubernetes 40

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

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

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 스터디 - 6. Security (1)

Security Primitives in K8s 기본적인 cluster의 security 옵션 access to these hosts must be secured. root access disabled password based Authentication 사용하지 않음 SSH key-based authentication 사용. 기타 k8s가 올라가있는 VM / PM 자체의 Security. 시험에서는 k8s 내부 리소스에 관련된 Security가 주로 나옴 kube-apiserver : 모든 요청과 통제를 담당하는 컴포넌트. 따라서 이 컴포넌트의 보안이 제일 중요함 누가 접근할 수 있는가? 무엇을 어디까지 통제할 수 있게 할 것인가? 가 핵심. Who can Access의 경우... Authenticat..

CKA 대비 kubernetes 스터디 - 5. Cluster Maintenance

OS Upgrade maintenance를 목적으로 (보안패치라던가, SW 업그레이드라던가) 클러스터의 특정 노드를 내려야 하는 경우. 만약 특정 노드가 죽었을 경우 노드가 금방 복구될 경우 -> kubelet은 이전에 돌고 있던 pod을 다시 시작시킨다. 큰 이상 없음. 5분 이상 노드가 죽었을 경우 -> pod가 해당 노드에서 아예 제거된다. (dead로 간주함) 다시말해 마스터 노드는 특정 노드의 사망판정을 내리기까지 5분은 대기한다. 만약 해당 pod가 replicaSet으로 관리되고 있다면, 다른 노드에서 pod를 재생성한다. '5분' 인 이유는 pod Eviction time 때문이다. kube-controller-manager에서 설정된 값. --pod-eviction-timeout=5m0s..