본문 바로가기

Kubernetes5

[Spring Batch] On K8S with Jenkins 개요배치 작업이 필요한 서비스에 대하여 Spring Batch를 사용하여 배치 프로그램을 자주 개발하는데 배치 작업 특성상 실행 주기가 짧거나 오랜 시간 동안 실행되며 자원을(Network, CPU) 많이 사용하는 경우가 많다. VM 서버를 사용하여 배치 작업을 구성하는 경우 배치를 실행하지 않는 경우에는 사용하지 않는 리소스를 낭비하게 되고, 동시에 많은 배치를 실행해야 하는 경우에는 리소스가 부족하여 배치를 실행하지 못하는 경우가 발생할 수 있다.K8S를 사용하면 위에 단점들을 극복할 수 있는데 Spring Batch를 K8S에서 사용하는 방법에 대하여 알아본다.Spring BatchKubernates JobsSpring Batch on Kubernates Spring Batch간단한  Spring .. 2024. 9. 12.
nGrinder on K8S 개요nGrinder를 다시 설치해야 하는 일이 생겨서 찾아보다가 K8S에 설치하여 사용할 수 없는지 찾아보다가 Docker HUB에 이미지가 업로드되어 있는 것을 보고 K8S에 설치하여 사용했다. InstallDocker Imagedocker hub에 공식 이미지가 있어서 바로 설치하여 사용가능하다.https://hub.docker.com/r/ngrinder/controllerK8SK8S에서 위 Docker 이미지를 구동을 위해서는 Deployment 파일을 작성하여 Controller와 Agent 인스턴스 실행이 필요한데 이것도 이미 작성해 주신 분이 있다. 참고 : https://github.com/KesavanKing/ngrinder-k8sDeployment 파일들은 받아서 resource: {} .. 2024. 7. 25.
Kubernetes에서 Spring @Scheduled 사용하기 개요Spring은 @Scheduled 어노테이션을 사용하여 예약된 작업을 처리하며, 이는 애플리케이션의 인스턴스가 하나만 실행 중인 경우 문제없이 동작한다. 그러나 애플리케이션은 점점 더 컨테이너화되고 있고, Kubernetes와 같은 플랫폼에서 실행되어 수평적 확장을 사용하여 배포하는 경우 애플리케이션은 여러 인스턴스가 실행되고 있다. 예약된 작업은 백그라운드에서 실행되기 때문에 애플리케이션을 수평적으로 확장할 때 예약된 작업이 중복이 발생할 수 있다. The Scenario@Componentclass ScheduledTasks { private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class); private .. 2024. 7. 9.
Kubernetes - Pods PodsPod는 Kubernetes에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이며, 한 개 또는 여러 개의 컨테이너들의 묶음이다. Kubernetes 클러스터의 Pod는 두 가지 방법으로 사용된다.Pods that run a single container.: 하나의 Pod에 하나의 컨테이너를 사용하는 경우Pods that run multiple containers that need to work together. : 여러 개의 컨테이너를 배치해서 사용하는 경우. Using Pods아래 예제는 nginx: 1.14.2 이미지를 실행하는 Pod 예제다.apiVersion: v1kind: Podmetadata: name: nginxspec: containers: - nam.. 2024. 7. 4.
Kubernetes - Service ServiceKubenetes 환경에서 Serivce는 Pod를 통해 실행되는 네트워크 애플리케이션을 네트워크에 노출시키는 가상의 컴포넌트다. Pod는 임시적인(ephemeral) 리소스임으로 Pod의 IP를 통해 접속하는 방법은 쉽지 않기 때문에 Service를 사용하여 Pod를 외부와 연동하도록 가이드한다.Defining a ServiceService는 Pod, ConfgMap과 같은 K8S Object로 Kubernetes API를 사용하여 정의할 수 있다. 예를 들어 HTTP 9376, HTTPS 9377 port로 서비스하는 app.kubernetes.io/name: MyApp 라벨이 설정된 Pod가 있는 경우 아래와 같이 서비스를 정의할 수 있다.apiVersion: v1kind: Servic.. 2024. 7. 2.