클라우드/쿠버네티스
Spring 프로젝트에서 쿠버네티스 API 사용하기(2) - fabric8를 사용한 매트릭 추출
채야미
2024. 1. 30. 12:16
여러가지 방법을 통해 매트릭을 추출할 수 있지만
fabric8를 사용하는 것이 가장 편리해 이 라이브러리를 사용해보겠습니다.
스프링부트 프로젝트 설정 및 Fabric8를 이용한 메트릭 추출
1. Gradle 파일에 implementation group:'io.fabric8', 부분 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mariadb.jdbc:mariadb-java-client'
implementation group:'io.fabric8', name: 'kubernetes-client', version:'6.8.1'
implementation 'o**rg.springframework.boot:spring-boot-starter-actuator'**
implementation 'io.micrometer:micrometer-registry-prometheus'
implementation 'org.json:json:20200518'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
2. 연동을 위한 caCert 인증서 준비 cat $HOME/.kube/config 를 사용하여 caCert 확인
clusters:
- cluster:
certificate-authority-data: <base64-encoded-ca-cert-data>
server: <master-url>
<base64-encoded-ca-cert-data>가 caCert
3. 기본 설정 준비 - Test를 사용에 연동 확인
public class RestApiTest {
private String kubernetesUrl = "API 주소"
private String API_TOKEN = "Token 값 대"
private String caCert = "ceCert 대입"
Config config = new ConfigBuilder()
.withCaCertData(caCert)
.withMasterUrl(kubernetesUrl)
.withOauthToken(API_TOKEN)
.withTrustCerts(true)
.build();
KubernetesClient client = new DefaultKubernetesClient(config);
4. 이제 아래와 같은 코드로 메트릭 정보를 불러올 수 있음
@Test
public void getPodCPUAndMemory() {
logger.info("==== Pod Metrics ====");
client.top().pods().metrics("default").getItems().forEach(podMetrics ->
podMetrics.getContainers().forEach(containerMetrics ->
logger.info("{}\\t{}\\tCPU: {}{}\\tMemory: {}{}",
podMetrics.getMetadata().getName(), containerMetrics.getName(),
containerMetrics.getUsage().get("cpu").getAmount(), containerMetrics.getUsage().get("cpu").getFormat(),
containerMetrics.getUsage().get("memory").getAmount(), containerMetrics.getUsage().get("memory").getFormat()
))
);
}
- 참고
[Kubernetes] Spring에서 쿠버네티스 Pod 정보조회
[kubernetes] 쿠버네티스 목차 [kubernetes] 모니터링 방법 정리 ㅁ 개요 지난 글 [Kubernetes] 쿠버네티스API 서버 CURL 접속 방법에서 쿠버네티스API와 REST API 요청을 위한 JWT Token, Service Account 권한 설정을
peterica.tistory.com