관리 메뉴

진취적 삶

12 클러스터 관리 본문

개발 도서/핵심만 콕 쿠버네티스

12 클러스터 관리

hp0724 2023. 11. 17. 11:00

12.1 리소스 관리

가상의 논리 클러스터인 네임스페이스를 이용하여 리소스를 관리할수 있게 해준다.

  • 일반 사용자 : 자신이 개발한 애플리케이션을 k8s 플랫폼 위에 실행하는 사용자
  • 관리자 : k8s 클러스터 자체를 관리하고 필요한 물리 리소스를 제공하는 총 책임자

클러스터 관리자가 일반 사용자에게 리소스 사용량을 제한하기 위해 사용하는 것이 LimitRange ,ResourceQuota 리소스 이다.

12.1.1 limitRange

  • 일반 사용자가 리소스 사용량 정의를 생략하더라도 자동으로 pod의 리소스 사용량 설정
  • 관리자가 설정한 최대 요청량을 일반 사용자가 넘지 못하게 제한
# limit-range.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: limit-range
spec:
  limits:
  - default:
      cpu: 400m
      memory: 512Mi
    defaultRequest:
      cpu: 300m
      memory: 256Mi
    max:
      cpu: 600m
      memory: 600Mi
    min:
      cpu: 200m
      memory: 200Mi
    type: Container
  • default : 생략시 사용되는 기본 limit
  • defaultRequest: 생략 시 사용되는 기본 request 설정값
  • max: 일반 사용자가 요청할수 있는 최대치
  • min: 일반 사용자가 요청할수 있는 최소치
# pod-exceed.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-exceed
spec:
  containers:
  - image: nginx
    name: nginx
    resources:
      limits:
        cpu: "700m"
        memory: "700Mi"
      requests:
        cpu: "300m"
        memory: "256Mi"

일반 사용자가 limitRange 의 max property 에서 설정한 CPU 600m ,메모리 600Mi를 벗어난 경우 에러 발생

rror from server (Forbidden): error when creating "pod-exceed.yaml": pods "pod-exceed" is forbidden: [maximum cpu usage per Container is 600m, but limit is 700m, maximum memory usage per Container is 600Mi, but limit is 700Mi]

12.1.2 ResourceQuota

전체 네임스페이스에 대한 제약을 설정할수 있다. 전체 리소스 사용량을 제약하고 싶을때 사용

# res-quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: res-quota
spec:
  hard:
    limits.cpu: 700m
    limits.memory: 800Mi
    requests.cpu: 500m
    requests.memory: 700Mi
  • limits.cpu : 네임스페이스 cpu limit 총합 제한
  • limits.memory: 네임스페이스의 메모리 limit 총합 제한
  • requests.cpu : 네임스페이스의 CPU request 총합 제한
  • requests.memory: 네임스페이스의 메모리 request 총합 제한

12.2 노드 관리

노드 자체에 대한 관리가 필요한 경우 온프레미스 환경에서는 물리적인 디스크의 손상, 내부 네트워크의 장애 , 클라우드 서비스 경우에는 서버 타입 변경 , 디스크 교체 등으로 인해 노드를 일시적으로 중단하고 관리해야 하는 경우가 있다.

  • Cordon: 노드를 유지보수 모드로 전환한다
  • Uncordon: 유지보수가 완료된 노드를 다시 정상화 한다.
  • Drain: 노드를 유지보수 모드로 전환하며 ,기존의 pod들을 퇴거한다.

12.3 Pod 개수 유지

PodDisruption Budget : 운영 중인 Pod의 개수를 항상 일정 수준으로 유지할수 있도록 Pod의 퇴거를 막아주는 역할을 한다.

# nginx-pdb.yaml
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: nginx-pdb
spec:
  minAvailable: 9
  selector:
    matchLabels:
      app: nginx

'개발 도서 > 핵심만 콕 쿠버네티스' 카테고리의 다른 글

15 CI/CD  (0) 2023.11.17
13 접근 제어  (0) 2023.11.17
11 고급 스케줄링  (0) 2023.11.17
10 스토리지  (0) 2023.11.17
09 ingress 리소스  (0) 2023.11.17