일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring microservice
- java
- Spring
- nGrinder
- MSA
- 동기화
- cloud native java
- 쿠버네티스
- 클라우드 네이티브
- Stress test
- devops
- 헬름
- 익명클래스
- decorator 패턴
- Microservice
- 머신러닝
- 클라우드 네이티브 자바
- Semaphore
- 자바
- CRD
- 마이크로서비스
- Adapter 패턴
- kubernetes
- Algorithm
- Kotlin
- 코틀린
- cloud native
- ingress
- ansible
- MySQL
- Today
- Total
목록쿠버네티스 (11)
카샤의 만개시기
클러스터 검증 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)를 특정 노드가 가지고 있는지 확인하는 단계..
쿠버네티스에서 레이블과 어노테이션은 모두 key-value 형식으로 메타 데이터를 제공한다는데서 동일함을 가집니다. 그렇다면 두 기능의 차이점에 대해 알아보도록 하겠습니다. 레이블 (Label) 가장 큰 차이점은 레이블은 쿠버네티스 리소스를 식별한다는 것입니다. 그로인해 레이블은 서비스 셀렉터와 같이 관련된 리소스 그룹을 지정하는데 사용할수 있습니다. 또한 키와 값의 구조가 제한되어 있기때문에 최적화 된 데이터 구조와 알고리즘을 사용하여 쿼리를 빠르게 평가할 수 있습니다. 레이블의 키와 값 구조에 대한 제한 어노테이션 (Annotation) 어노테이션은 비식별 정보이며 쿠버네티스 내부에서 사용할수 없습니다. 하지만 헬름과 같은 외부 툴이나 라이브러리에서 참조하여 사용할수 있습니다. 어노테이션의 양이 크더..
https://github.com/kubernetes-sigs/descheduler
쿠버네티스에서는 리소스 부족을 처리하기 위하여 쿠버네티스 메트릭(metrics.k8s.io) 외부 정의 메트릭(external.metrics.k8s.io) 사용자 정의 메트릭 (custom.metrics.k8s.io) 위 메트릭 정보를 참고하여 하기 3가지 방식의 오토 스케일러를 사용한다. Horizontal Pod Autoscaler (HPA) 클러스터의 Pod 수를 조정하여 오토스케일하는 방법이다. HPA의 메트릭 허용 오차 값의 default 값은 10%이다. Metrics 값을 지속적으로(default 30sec) 체크한다. 임계치를 넘으면 Pod 수를 늘리기 위한 이벤트가 시작된다. Deployment / Replication Controller에 레플리카 수를 갱신한다. Deployment /..
특정 파드가 너무 많은 리소스를 점유하게 되면 같은 노드에 있는 다른 파드에 영향을 줄 수 있기 때문에 스케줄러는 각 파드가 최대/최소로 사용 가능한 리소스 요구 사항을 파악하고 이에 맞게 효율적으로 스케줄링해야 한다. 리소스 요청 파드를 실행하기 위한 최소 리소스 양을 지정한다. 파드를 실행하기 위한 최소한의 리소스를 가지고 있는 노드가 존재하지 않는다면 여유 용량이 확보될 때까지 대기 상태로 기다린다. 리소스 상한 파드가 사용할 수 있는 최대 리소스 양을 지정한다. 파드가 최대 상한을 초과하려 한다면 해당 파드는 요청이 제한되고 상한을 초과하였을 경우에는 파드가 종료되고 다시 스케줄링되어 동일 노드에서 재시작 된다. spec: containers: - name: cafe image: kakao/caf..