일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kubernetes
- nGrinder
- 클라우드 네이티브
- 익명클래스
- Kotlin
- ansible
- devops
- cloud native
- 클라우드 네이티브 자바
- spring microservice
- MySQL
- decorator 패턴
- Stress test
- Spring
- 코틀린
- cloud native java
- Algorithm
- 자바
- Adapter 패턴
- 마이크로서비스
- Microservice
- java
- ingress
- 쿠버네티스
- 머신러닝
- 헬름
- 동기화
- MSA
- Semaphore
- CRD
- Today
- Total
목록DevOps (22)
카샤의 만개시기
쿠버네티스를 실무에서 사용하다 보면, Kubernetes annotations을 이용하여 nginx ingress에 커스터마이즈한 행동을 지정하곤 한다. 그 중에 configuration-snippet와 server-snippet 설정이 유사하게 사용되는것 같은데 정확히 어떤 차이가 있는지 궁금하여 정리해보았다. nginx.ingress.kubernetes.io/configuration-snippet: | ... nginx.ingress.kubernetes.io/server-snippet: | ...configuration-snippet 도큐먼트 NGINX location에 redirect/rewrite를 포함한 다양한 설정을 추가적으로 지정해줄수 있다. server-snippet 도큐먼트 Attenti..
Operator와 CRD는 쿠버네티스의 철학과 동작 원리를 잘 나타낸다. Operator Operators are software extensions to Kubernetes that make use of custom resources to manage applications and their components. 오퍼레이터는 쿠버네티스와 쿠버네티스 이외의 것들을 둘 다 이해하는 쿠버네티스 컨트롤러이다. 이 두 영역에 대한 지식을 결합함으로써, 두 도메인을 모두 이해하는 실제 운영자가 필요한 작업을 자동화할 수 있다. Custom Resource Definition (CRD) In the Kubernetes API a resource is an endpoint that stores a collection..
Fluentd 빅데이터 시대가 오면서 데이터 수집기는 여러 방면에서 사용이 되는데, 대표적인 데이터 수집기는 ELK에서 사용되는 Logstash와 Fluentd로 나뉜다. Fluentd는 쿠버네티스와 같은 CNCF 재단에 속해 있는 범용 로그 수집용 오픈소스 프로젝트로써 C와 Ruby로 개발되었다. logstash에 비해 안정성이 높고 아키텍쳐가 단순한 편이며 메모리 또한 적게 쓰는 편이다. Fluentd 주요 특징 Unified Logging with JSON Fluentd의 데이터 구조는 JSON 형태로 되어 있다. downstream data processing이 JSON으로 제공되어 더욱 쉽고, 이는 유연한 스키마를 유지하면서 accessible한 structure를 제공해준다. Pluggable..
레플리케이션 컨트롤러는 쿠버네티스 프로젝트 초기부터 존재했던 가장 기본적인 컨트롤러로써, 파드가 스펙과 동일하지 않게 존재할 경우 스펙과 동일한 상태가 되도록 관리합니다. 지금은 레플리케이션 컨트롤러보다 레플리카세트를 사용하고, 앱의 배포에는 디플로이먼트를 사용하는 것이 추세입니다. 차이점 셀렉터 레플리케이션 컨트롤러는 등호 기반이므로 레이블을 선택할 때 같은지(=) 다른지(!=)만 비교합니다. 레플리카세트는 집합 기반으로써 in, notin, exists 같은 연산자를 지원합니다. rolling-update 레플리케이션 컨트롤러는 rolling-update 옵션을 사용할 수 있지만 레플리카세트는 사용할 수 없습니다. 레플리카세트는 디플로이먼트를 통하여 rolling-update를 지원합니다.
클러스터 검증 Sonobuoy 자체 호스팅 클러스터를 관리하거나 관리형 서비스를 사용 중이지만 쿠버네티스가 제대로 구성되어 있는지 최신 상태인지 확인하기 위해서 쿠버네티스 적합성 테스트를 진행할수 있다. K8Guard 쿠버네티스 클러스터의 일반적인 문제를 확인하고 잘못된 부분을 수정하거나 해당 문제에 대한 알람을 보낼 수 있는 도구이다. 프로메테우스와 같은 모니터링 시스템에서 수집할 수 있는 메트릭을 제공하여 정책을 위반하는 디플로이먼트 개수, 쿠버네티스 API 응답 성능 등을 모니터링 할 수 있다. Copper 쿠버네티스 매니페스트를 검사하는 도구로 일반적인 문제 사항을 플래그하거나 사용자 지정 정책을 적용한다. Cooper는 검증 규칙과 정책을 표현하기 위한 도메인 특화 언어(DSL)을 제공한다. 예..
인그레스는 서비스 앞에 존재하는 일종의 로드 밸런서이다. 쿠버네티스의 서비스는 L4 레이어로 TCP 단에서 Pod들을 밸런싱하기 때문에 TLS나, VirtualHost와 같이 여러 호스트명을 사용하거나 호스트명에 대한 라우팅이 불가능하고, URL Path에 따른 서비스간 라우팅이 불가능하다. MSA 환경에서는 하나의 어플리케이션이 하나의 URL로 매핑되는 경우가 많은데, 이를 위해 MSA 서비스간의 라우팅을 하기 위해서는 API 게이트웨이를 사용하는 경우가 많다. 이 경우에는 API 게이트웨이에 대한 관리포인트가 생기기 때문에, URL 기반의 라우팅 정도라면 L7 로드밸런서로 해당 기능을 제공한다. 쿠버네티스에서 HTTP(S)기반의 L7 로드밸런싱 기능을 제공하는 컴포넌트를 Ingress라고 한다. ap..
데몬셋 각 파드마다 동일한 로깅 에이전트를 가지고 있으면 각 노드에 중복으로 존재할수 있기때문에, 각 노드마다 실행이 필요한 단일 레플리카의 파드가 있다면 데몬셋을 이용하면 된다. 주로 로그 수집기나, 노드를 모니터링하는 데몬 등에 사용된다. .spec.updateStrategy.type 데몬세트/스테이트풀셋의 파드를 업데이트할때 OnDelete와 RollingUpdate 중 선택할 수 있다. 기본 값은 RollingUpdate이나, 쿠버네티스 1.5 이하 버전에서는 OnDelete가 기본 값이다. RollingUpdate는 템플릿을 변경했을때 바로 변경되지만 OnDelete는 파드를 직접 제거해야 새로운 버전의 파드가 생성된다. .spec.updateStrategy.rollingUpdate.maxUna..
쿠버네티스는 Pod를 추가 생성할때 Pod를 적정 node에 배치하기 위해 많은 것을 고려하고 스케줄링한다. 파드가 특정 노드에 선정되기까지 크게 세가지 필터의 절차를 순차적으로 가진다. 볼륨 필터 리소스 필터 토폴로지 필터 볼륨 필터 Pod를 생성되고자 하는 디스크 볼륨에 대해서 Node가 지원할 수 있는지를 확인하고 마운트 되는 볼륨이 충돌이 일어나지 않는지 확인한다. 기본 클라우드 제공자를 이용할 경우, 규칙과 충돌을 일으키지 않고 attach 할 수 있는지 확인한다. Node Affinity를 이용하여 특정 노드에만 지정되도록 하는 추가적인 볼륨 토폴로지 제한이 있는지 확인한다. 리소스 필터 Pod를 배포할만한 충분한 리소스(CPU,Memory,Disk)를 특정 노드가 가지고 있는지 확인하는 단계..