728x90
반응형
10월 28일(월) 수업 중
1. 프로세스와 스레드 관리
Kubernetes는 파드(Pod) 단위로 컨테이너를 관리한다. 파드는 여러 컨테이너를 포함할 수 있으며, 각 컨테이너는 독립적으로 리소스(CPU, 메모리)를 요청하고 제한할 수 있다.
- 프로세스와 스레드의 개념
- 컨테이너 내에서 실행되는 서비스나 애플리케이션은 여러 프로세스나 스레드로 구성될 수 있다.
- 예를 들어, Kubernetes의 스케줄러가 실행 중인 프로세스를 확인할 때는 ps -ax | grep scheduler 같은 명령을 사용
- 파드의 리소스 설정
apiVersion: v1 kind: Pod metadata: name: core-k8s labels: role: just-an-example app: my-example-app organization: friends-of-manning creator: adam spec: containers: - image: nginx imagePullPolicy: Always name: nginx resources: requests: cpu: "1" memory: 1G
- YAML 파일에서 각 파드의 CPU와 메모리 사용량을 requests와 limits로 지정할 수 있다.
- Requests: 파드가 최소한으로 요구하는 리소스 양
- Limits: 파드가 최대 사용할 수 있는 리소스 한도
- cpu: "1"과 같은 설정으로 CPU와 메모리를 지정하여 자원 사용량을 제한할 수 있다.
- 자원 사용량 제한을 설정하지 않으면 파드가 다른 프로세스에 영향을 미칠 수 있다.
- YAML 파일에서 각 파드의 CPU와 메모리 사용량을 requests와 limits로 지정할 수 있다.
- 메모리 스왑을 비활성화하는 이유
- 스왑(Swap): 디스크를 이용해 메모리 부족을 보완하지만, 성능 저하를 유발할 수 있다.
- 특히 스왑이 활성화되면, 애플리케이션의 응답 시간은 더 이상 일정하지 않고 상황에 따라 달라질 수 있다. 이는 시스템의 부하나 메모리 사용량에 따라 달라지기 때문에, 운영팀은 성능을 예측하기 어려워진다.
- Kubernetes는 예측 가능한 성능을 유지하기 위해 메모리 스왑을 비활성화하여 안정적인 클러스터 환경을 유지한다.
2. HugePages
HugePages는 대용량 애플리케이션의 성능을 향상시키기 위해 사용된다. 일반 메모리 페이지는 4KB 크기지만, HugePages는 이를 2MB 이상의 큰 페이지로 변환하여 성능을 최적화한다.
- HugePages의 필요성
- 데이터 센터의 빅데이터 처리나 데이터베이스 애플리케이션(예: ElasticSearch, Cassandra)은 많은 메모리를 사용하기 때문에 작은 페이지로 관리하기 어려울 수 있다.
- 이점
- TLB 효율성: TLB 캐시의 효율이 증가하여 메모리 접근 속도가 빨라진다.
- 메모리 단편화 감소: 연속적인 메모리 블록을 할당할 수 있어 단편화 문제를 줄인다.
3. 리눅스 커널 및 Kubernetes 모니터링
Kubernetes 환경에서 컨테이너와 시스템의 상태를 모니터링하는 것이 중요하다. 이를 통해 자원 사용량을 확인하고 문제가 발생할 때 빠르게 대응할 수 있다.
- 프로메테우스 (Prometheus)
- Kubernetes 환경에서 모니터링을 위한 대표적인 도구로, 시스템 메트릭을 수집해 실시간으로 관찰할 수 있는 대시보드를 제공한다.
- 클러스터 내에서 CPU, 메모리, 네트워크 등 다양한 리소스 정보를 수집하고, 성능 이상 상황을 탐지하는 데 유용하다.
- Metric 유형
- Gauge: 특정 시간에 측정한 값 (예: 초당 수신된 요청 수)
- Histogram: 다양한 이벤트를 시간별로 집계하여 보여줍니다.
- Counter: 지속해서 증가하는 이벤트 개수(예: 요청 수의 누적 값)
728x90
반응형
'Kubernetes' 카테고리의 다른 글
[Kubernetes] kind와 kubectl 설치 (1) | 2024.10.30 |
---|---|
[Kubernetes] Kubernetes에서 NodePort를 활용한 Spring Boot 애플리케이션의 모든 노드 포트 개방 및 서비스 배포 (0) | 2024.10.29 |
[Kubernetes] Linux에서 MiniKube를 설치 및 쿠버네티스 실습 (2) | 2024.10.28 |
[Kubernetes] ReplicaSet을 이용한 Pods 배포 (5) | 2024.10.25 |
[Kubernetes] Deployment를 이용한 Pod 배포 - Deployment와 Pods의 차이점 (0) | 2024.10.24 |