
쿠버네티스가 제공해주는 기능 10가지 쿠버네티스 공식 사이트에 들어가면 쿠버네티스가 제공해주는 10가지 기능에 대해 설명되어 있다. 이중에서도 자가 치유(Self-healing)에 대한 부분을 이번 포스팅에서 다루도록 한다. 자가 치유(Self-healing) 오류가 발생한 컨테이너를 재시작하고, 노드가 죽었을 때 컨테이너를 교체하기 위해 다시 스케줄 하고, 사용자 정의 상태 체크에 응답하지 않는 컨테이너를 제거하며, 서비스를 제공할 준비가 될 때까지 클라이언트에 해당 컨테이너를 알리지 않는다. 즉, 정상적인 컨테이너들만을 대상으로 애플리케이션을 운영해 주겠다는 의미이다. Self-handling 기능중에 포함된 것이 'livenessProbe'이다. livenessProbe는 컨테이너를 진단해서 정상적..

쿠버네티스에서 컨테이너 동작 flow 새로운 컨테이너를 실행시키는 flow 1) kube-apiserver는 REST API Server로서 kubectl 커맨드나 yaml로 작성된 파일의 요청을 받고 처리한다. api-server는 우선 etcd에서 worker노드들의 상태 정보를 수집한 뒤 scheduler로 보낸다. 2) scheduler는 api-server로부터 요청을 받고 worker 노드의 상태를 확인한 뒤 어느 노드에 배치시키는 것이 가장 좋을지 결정 후 api-server로 응답한다. 3) api-server가 응답을 받고 해당하는 노드로 컨테이너 배치를 요청한다. 이때 해당 worker노드의 kubelet으로 요청을 보낸다. 4) worker노드의 kubelet이 컨테이너 런타임으로 요..

cf. 설치할 버전 containerd 1.5.5 runC 1.1.1 * contianerd 및 runC는 컨테이너 동장을 위해 필요하기 때문에 쿠버네티스 클러스터 시작(kubeadm init) 전에 반드시 필요함. * CNI 플러그인은 Pod CIDR 및 서브넷을 구성하기 때문에 kubeadm init 전 또는 후에 필요함. * CNI 플러그인이 설치되지 않은 경우 CoreDNS가 제대로 동작할 수 없음. 1. containerd 1.5.5 설치 쿠버네티스 버전 1.22를 사용할 것이기 때문에 containerd는 1.5.5를 사용한다. 링크: https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-containerd-on-ubuntu-22-04.h..

containerd 등장 배경 - OCI 표준 초기 docker engine은 Monolithic한 구조였고 이를 나누는 작업이 시작되었다. 이러한 Monolithic한 구조의 docker engine에는 API, CLI, 네트워크, 스토리지 등 여러 기능들이 한 곳에 담기게 되었고 Docker에 의존적이던 kubernetes에서는 docker 버전이 새로 나올 때마다 영향을 받을 수밖에 없었다. 이를 계기로 2015년에 Linux Foundation에서는 '컨테이너 기술에 대한 표준'을 정하는 프로젝트(OCI)가 시작되었다. 이 프로젝트는 2016년 12월에 Container Runtime에 대한 표준을 만들고 이를 실행할 수 있는 추상화된 인터페이스인 CRI(Container Runtime Inter..

구성도 이번 포스팅에서 구축할 master, worker 노드의 구성도이다. 하나의 master 노드와 두 개의 worker 노드를 구축하고 OS 설치, 네트워크 구성, 도커 설치 등을 진행한다. 이번 포스팅에서 다룰 내용은 다음과 같다. - VM 기반으로 Master, Worker 노드를 구축 - 노드 간 네트워킹 설정 (NAT) - 호스트에서 SSH 접속 설정 - 각 노드에 docker를 설치 쿠버네티스 설치 과정은 다른 포스팅에서 다룬다. 0. 사전준비 1) Ubuntu iso 이미지 파일 다운로드 - 22.04에 containerd를 설치할 경우 일종의 버그가 있어 20.04를 추천한다. - 설치 편리를 위해 server 대신 desktop iso를 사용했다. 2) Virtual Box 설치 1...

쿠버네티스 클러스터 구성 도구 1. kubeadm - 쿠버네티스에서 '공식으로 제공'하는 클러스터 생성, 관리 도구 - single master, multi master를 구축하는데 모두 적합 2. kubespray - 쿠버네티스 클러스터를 배포하는 오픈소스 - 다양한 형식으로 쿠버네티스 구성 가능(멀티 마스터 구성에 적합) - 온프레미스에서 상용 서비스 클러스터 운영시 유용 - 다양한 CNI 제공 cf. CNI (Container Network Interface) - 컨테이너(Pod) 간에 네트워킹을 지원해 주는 '소프트웨어' - VxLAN, Pod Network 이라고도 부름 - 쿠버네티스를 사용하기 위해서는 반드시 필요함 - 다양한 플러그인이 존재함(플라넬, 칼리코, 위브넷 등) 구성할 요소 1. ..

Go의 철학 1. 큰 프로젝트에서도 사용될 수 있는 안정성 2. 빠른 속도 3. 요즘 인기 있는 Python, Javascript과 같은 가독성 4. 네트워크, 멀티프로세싱에 최적화 cf. 2012년 3월에 Go 1.0 공개했으며 현재(2022년 8월) 최신 버전은 1.19이다. Golang은 C계열 언어로 분류되며 객체지향 언어는 아니지만 객체지향스럽게 프로그래밍 가능하다고 한다.(상속을 지원하지 않지만 객체지향처럼 코딩 가능) Go는 UNIX, C언어, B언어, UTF8, JVM과 같은 프로젝트에 참여한, 꽤 영향력이 큰 개발자들이 만든 언어이다. Golang의 장단점 1. 장점 1. 빠른 속도 Go는 컴파일 기반 언어여서 실행 자체 시점만 비교했을 때, 인터프리터 기반인 언어보다 빠르다. 컴파일 언..

Static Analysis vs Dynamic Analysis 정적분석과 동적분석은 모두 코드의 취약점을 발견하는데 목표를 두고 있다. 두 분석의 차이점은 분석기가 개발 주기에서 어느 시점에 수행되느냐에 있다. 동적분석은 애플리케이션의 실행 이후 시점에 수행되고 정적분석은 애플리케이션의 실행 이전 시점에 수행된다. 동적분석의 경우 애플리케이션을 실행시켜 애플리케이션 내 결함 및 취약점 분석, 메모리 및 쓰레드 결함 등을 분석할 수 있다. 이와 반대로 정적분석은 애플리케이션을 실행하지 않고 코드의 취약점을 분석하는데 목적이 있다. 정적분석과 동적분석의 목적에 대한 차이는 다음과 같다. - 정적분석: 개발 중 하면 안 될 것을 했는지 검사 - 동적분석: 개발 중 하려고 한 것을 잘했는지 검사 대표적인 분석..
- Total
- Today
- Yesterday
- go
- 컨트롤러
- jvm
- db
- Java
- Controller
- helm
- RDB
- argocd
- Stream
- github actions
- 우분투
- golang
- ubuntu
- LFCS
- 코틀린
- K8s
- Linux
- ci/cd
- 카프카
- spring
- GitOps
- 쿠버네티스
- Non-Blocking
- container
- docker
- rolling update
- Kubernetes
- kafka
- CICD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |