K8s

A collection of 19 posts
ECR Pull-Through Cache 적용기(feat: Docker Rate Limit 을 피해서)
ECR Featured

ECR Pull-Through Cache 적용기(feat: Docker Rate Limit 을 피해서)

들어가며 EKS 환경에서 Helm Chart를 이용해 여러 애플리케이션을 배포하다 보면, Docker Hub(registry-1.docker.io)의 이미지를 그대로 사용하는 경우가 많습니다. 그런데 NAT IP가 고정된 상태에서 노드가 자주 추가/삭제 되는 스케일 아웃/인을 반복하는 환경이라면 Docker Hub 의 Image Pull Rate Limit 에 걸릴 우려가 있습니다. 특히, 2024년 6월
19 min read
Istio Sidecar 설정을 통한 Pod 의 egress 제어
Istio Featured

Istio Sidecar 설정을 통한 Pod 의 egress 제어

💡Istio 의 Sidecar 설정을 통해 각 워크로드에 붙어있는 사이드카 프록시의 구성 설정을 변경 할 수 있습니다. 이 포스트에서는 이 설정을 통해 특정 서비스가, 지정된 서비스만 호출 할 수 있도록 제어하는 방법을 소개합니다. Network Policy 기본적으로 쿠버네티스에서 파드 - 파드 , 파드 - 서비스 등의 모든 통신은 기본적으로 허용이 되어있다. 이 때
10 min read
kubeadm 은 CoreDNS 를 어떻게 설치할까요? 파드는 서비스 도메인을 어떻게 처리할까요? 그리고 설정은 어떻게 할까요? (feat: NodeLocal DNSCache)
kubeadm Featured

kubeadm 은 CoreDNS 를 어떻게 설치할까요? 파드는 서비스 도메인을 어떻게 처리할까요? 그리고 설정은 어떻게 할까요? (feat: NodeLocal DNSCache)

💡CoreDNS 는 쿠버네티스 “서비스 디스커버리”를 위한 핵심 애드온입니다. kubeadm 에서는 CoreDNS , kube-proxy 두가지의 애드온을 설치합니다. 만약 바닐라 쿠버네티스 클러스터를 프로비저닝 하고 있다면 이러한 애드온은 수동으로 설치해야 합니다. 들어가며 Kubeadm 의 경우 CoreDNS 및 kube-proxy 를 addon 으로 부르며, 클러스터 프로비저닝 시점에서 자동으로 설치합니다. Kubeadm 을 wrapping 한 Kubespray 또한
17 min read
kubelet 이 원하는 커널 파라미터
Kubelet Featured

kubelet 이 원하는 커널 파라미터

Kubelet 은 실행하는 머신의 커널 파라미터가 특정 값이 제대로 설정되어있지 않다면 동작하지 않고 오류가 발생하게 됩니다. 이 때 kubelet에 --protect-kernel-defaults=false 라는 실행 인자를 념겨주면 정상 동작을 하게 됩니다. 이런 단순한 오류 해결을 넘어서 실제로 kubelet 은 어떤 커널 파라미터가 세팅되어있기를 원하는지, 그리고 어떤 코드에서 그런 내용을 볼 수 있는지 등에 대해서 다루는 글입니다.
13 min read
etcd 의 snapshot 과 WAL이 무엇일까요? (etcd backup snapshot이 아닌)
etcd Featured

etcd 의 snapshot 과 WAL이 무엇일까요? (etcd backup snapshot이 아닌)

etcd 의 snapshot 그리고 WAL 에 대해서 알아봅니다. etcd 는 raft 합의 알고리즘을 기반으로 구현된 key-values 저장소로. raft 알고리즘에서 snapshot 에 대한 내용이 존재합니다. 그것을 etcd 는 어떻게 구현했는지 알아봅니다. (etcdctl snapshot save 를 통해 생성하는 스냅샷과는 조금은 다른 내용입니다)
9 min read
K8s 오퍼레이터
Kubernetes

K8s 오퍼레이터

쿠버네티스 오퍼레이터가 무엇인지에 대해서 알아봅니다. 우선 오퍼레이터라는 말 자체는 소프트웨어 디자인 패턴에서 나오는 하나의 용어로 이해를 하면 됩니다. 오퍼레이터 패턴이란 운영 노하우, 도메인 지식등을 갖고있는 운영자의 역할을 소프트웨어에 새긴 개념으로 볼 수 있습니다. 쿠버네티스의 오퍼레이터도 그런 관점에서 동일한 컨셉을 갖고 있습니다.
8 min read
gRPC transcoder in Istio 테스트
Istio

gRPC transcoder in Istio 테스트

💡gRPC transcoder 를 envoy가 아닌 istio 레벨에서 사용해보는 예제입니다. gRPC transcoder 는 gRPC 서버에서 기존 RESTful API 혹은 HTTP API라고 불리는 json 기반의 API 호출을 gRPC로 변환해주는 일종의 프록시라고 할 수 있습니다. 이것을 통해 우리는 gRPC 엔드포인트와 HTTP 엔드포인트를 동시에 제공 할 수 있습니다. 테스트 코드들 GitHub - kimsehwan96/gRPC-python-example
11 min read
etcd 의 WAL 이 무엇인가요?
etcd

etcd 의 WAL 이 무엇인가요?

💡WAL (Write Ahead Log)는 etcd 가 데이터베이스에 적용되기 전에 모든 변경 사항을 기록하는 곳으로, 미리 쓰기 라는 측면에서 반영될 작업이 미리 기록되어 데이터 무결성과 시스템 일관성을 보장한다는것을 의미합니다. 각 파일은 WAL 의 세그먼트를 의미하고, 이 파일은 etcd 클러스터의 트랜잭션 스냅샷을 캡처해서, 필요한 경우 etcd 상태를 재 구축하는데 사용 할
5 min read
kube-apiserver 와 etcd 는 어떻게 통신하는가?
ControlPlane Featured

kube-apiserver 와 etcd 는 어떻게 통신하는가?

kube-apiserver 의 백엔드 스토리지이자, kubernetes 의 백엔드 스토리지인 etcd 에 대해서 kube-apiserver 가 어떻게 etcd 클러스터에 요청을 보내고 그 부하 분산을 어떻게 하는지 실제 kube-apiserver 및 etcd 클라이언트 분석을 토대로 정리한 글입니다. kube-apiserver 는 etcd v3 client 를 추상화한 별도의 계층을 사용해서 etcd 클러스터에 라운드로빈 형태로 트래픽을 분산해서 요청합니다. 이것은 gRPC 클라이언트 사이드 로드밸런싱과도 관련이 있는 내용입니다.
14 min read
Keel 을 이용한 컨테이너 이미지 태그 업데이트 자동 감지 및 쿠버네티스 파드 재배포 자동화
K8s Featured

Keel 을 이용한 컨테이너 이미지 태그 업데이트 자동 감지 및 쿠버네티스 파드 재배포 자동화

Keel ? Keel 은 Helm, DaemonSet, StatefulSet, Deployment 를 통해 생성된 파드의 컨테이너 이미지 업데이트를 자동화하는 쿠버네티스 오퍼레이터입니다. GitHub - keel-hq/keel: Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updatesKubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates - keel-hq/keelGitHubkeel-hqKeelKubernetes Operator to automate Helm, DaemonSet, StatefulSet &
5 min read
kube-apiserver 를 컨트롤 플레인 외부에 설치해서 사용하기
K8s Featured

kube-apiserver 를 컨트롤 플레인 외부에 설치해서 사용하기

Kube-apiserver 를 컨트롤플레인 외부에 설치해서 사용할 수 도 있다는 내용을 openai 의 기술블로그를 통해 영감을 얻고 직접 테스트해본 글입니다. Dedicated Node(전용 노드) 에서 kube-apiserver 를 사용하는 상황에서 유용하게 쓰일 방법입니다. 프로덕션에서 사용하기에는 적절하지 않은 테스트이지만 그럼에도 PoC (개념검증) 수준에서 실제 코드, 설정, 인증서를 수정해가면서 직접 테스트 가능하도록 작성한 글입니다.
10 min read