Post

[OCI] OKE Cluster 구축(3) - 클러스터 배포

[OCI] OKE Cluster 구축(3) - 클러스터 배포

1. OKE Cluster 배포

1.1. 권한 부여

  • OCI Kubernetes 서비스를 배포하기 위해 아래 권한을 가지는 정책이 필요
    1
    2
    3
    4
    5
    
      ## <GROUP_NAME>에 Kubernetes 관련 리소스 권한(manage) 부여
      Allow group <GROUP_NAME> to manage cluster-family in compartment <COMPARTMENT_NAME>
    
      ## <GROUP_NAME>에 OCIR(OCI 이미지 저장소) 관련 리소스 권한(manage) 부여
      Allow group <GROUP_NAME> to manage repos in compartment <COMPARTMENT_NAME>
    
  • 테스트하는 계정은 Administartor 그룹(all-resources 권한)으로 배포 및 관리 가능

    실습이 아닌 실무 환경에서는 최소 권한 부여 정책에 따라 필요한 권한만 지정하여 부여하는 것이 바람직하다!

1.2. 클러스터 배포(1) - Create cluster

  1. Name : <적절한 이름 입력>
  2. Kubernetes version : <쿠버네티스 버전 선택>
    → 본 가이드에서는 작성 시점 기준 최신 버전(v1.34.1) 선택 image

1.3. 클러스터 배포(2) - Network setup

  1. Network type : VCN-native pod networking 선택
  2. VCN : <이전 가이드에서 생성한 VCN>
  3. Kubernetes API endpoint subnet : <이전 가이드에서 생성한 API용 Subnet> image

  4. Private IPv4 address assignment for Kubernetes API endpoint : API Endpoint의 Private IP 자동 할당
  5. Public IPv4 address assignment for Kubernetes API endpoint : API Endpoint의 Public IP 자동 할당 → API Endpoint 서브넷의 Private으로 Public IP 할당 불가 image

  6. Kuberentes service LB subnet : <이전 가이드에서 생성한 LB용 Subnet> image

Advanced options → Kubernetes service CIDR block

  • 쿠버네티스가 사용하는 CIDR 대역
  • VCN CIDR 대역과 겹치지 않아야 함 image

1.4. 클러스터 배포(3) - Node pools

  1. Name : <적절한 이름 입력>
  2. Node type : Managed 선택
  3. Version : 클러스터 버전과 동일한 버전 선택 image

  4. Node Placement Configuration
    1. Availability domain : <사용 중인 AD 선택>
    2. Worker node subent : <이전 가이드에서 생성한 WorkerNode용 Subnet>
    3. Fault Domain : Worker Node가 배포될 Fault Domain 선택 image
  5. Shape and image
    1. Node shape : <적절한 Shape 선택>
    2. Number of OCPUs : <WorkerNode에 할당할 OCPU>
    3. Memory GB : <WorkerNode에 할당할 Memory> image

    4. Image : <아키텍처(x86, ARM) 및 Kubernetes 버전에 맞는 이미지 선택> image image

    Image Source

    image

    1. OKE Image
      • Platform 이미지를 기반으로 하며, 필요한 모든 구성과 필수 소프트웨어를 포함한 이미지
      • Managed Node 프로비저닝 시, Platform 이미지에 비해 빠른 프로비저닝 가능
      • 아키텍처(x86, ARM)와 Kubernetes 버전이 구분되어 있음
    2. Platform Image
      • Oracle Linux OS만 포함하며, Kubernetes Engine에 필요한 소프트웨어를 다운로드, 설치 및 구성함

    Supported Images (Including Custom Images) and Shapes for Worker Nodes

  6. Node pool options : <Worker node 수 입력> image

  7. Boot volume
    1. Specify a custom boot volume size 선택
    2. 50 GB (최소 사이즈) image
  8. Pod communication
    1. Subnet : <이전 가이드에서 생성한 Pod용 Subnet>
    2. Number of pods per node : 노드 당 파드 개수 → 기본 값 image
  9. Cordon and Drain
    1. Eviction grace period (mins) : 60 (default)
      1. Worker node를 Terminate 하기 전, Cordon and Drain 작업을 허용할 시간
      2. Node pool을 축소하거나 배치 구성을 변경할 때 사용
        -> Worker node를 Cordoning하거나 Draining 작업 없이 즉시 Terminate 할 경우 0 지정
    2. Force terminate after grace period : 체크 해제 (default)
      1. Eviction grace period(퇴거 유예 기간)가 끝날 때, Worker node의 Cordon and Drain 작업이 성공적으로 완료되지 않은 경우에도 Worker node를 항상 Terminate할 지에 대한 여부
      2. Eviction grace period 내에 종료할 수 없는 Worker node가 포함된 Node pool은 ‘주의 필요’ 상태
    3. Force action after grace period : 체크 해제 (default)
      1. Workner Node에 대한 유지 관리 작업(노드 재부팅, 노드 Boot Volume 교체 등)을 수행할 때, 해당 노드가 성공적으로 Cordon 및 Drain 되지 않더라도 Eviction grace period(퇴거 유예 기간) 시점에 유지 관리 작업을 강제로 수행할 지에 대한 여부 image

    Cordon and Drain

    1. Cordon
      1. 특정 노드를 Kubernetes 스케줄러에서 제외하여 새로운 Pod가 해당 노드에 스케줄링 되지 않도록 설정 (기존 노드에서 실행 중인 Pod는 그대로 유지)
      2. 노드를 유지보수하거나 업데이트가 예정되어 있을 때 사용
      3. 특정 노드를 점진적으로 클러스터에서 제거할 때 사용
    2. Drain
      1. 특정 노드를 스케줄링에서 제외(Cordon)한 후, 해당 노드에서 실행 중인 모든 Pod를 다른 노드로 이동 (DaemonSet이나 관리되지 않는 Pod는 이동되지 않음 → 별도 추가 플래그 사용)
    3. OKE에서의 Cordon and Drain ‘Cycle nodes’ 기능을 통해 자동으로 Cordon, Drain, 노드 삭제 기능을 수행

    Cordoning and Draining Managed Nodes Before Shut Down or Termination

    ‘Need Attention’ 상태의 Node pools

    • Node pools에 있는 하나 이상의 Worker Node가 Eviction grace period(퇴거 유예 기간) 내에 모든 Pod를 제거하지 못한 경우를 의미
    • ‘Force terminate after grace period’ 체크를 활성화 하여 Cordon 및 Drain이 정상적으로 완료되지 않더라도 Eviction grace period(퇴거 유예 기간) 이후 Worker Node Terminate 가능

    Scheduling, Preemption and Eviction

  10. Kubernetes lables
    1. Key : <기본 값>
    2. Value : <기본 값>
  11. Node pool tags : <미설정(기본 값)>
  12. Node tags : <미설정(기본 값)> image

  13. Add an SSH key
    1. Generate SSH key pair 선택
    2. Private key, Public key 다운 image

Worker Node에 대한 SSH Key를 가지고 있다면, 기존 키를 업로드하여 이용해도 무방함
(Upload a public key file (.pub))

1.5. 클러스터 배포(4) - Review

image image image image image

1.6. Basic Cluster vs Enhanced Cluster

  • Basic Cluster : Create a Basic cluster 체크
  • Enhanced Cluster : Create a Basic cluster 미체크
특징/역량Enhanced ClusterBasic Cluster
모든 핵심 Kubernetes 및 OKE 기능을 지원합니다.
관리형 노드 풀 지원
지원되는 가상 노드 풀아니요
자체 관리 노드 지원아니요
업데이트/업그레이드를 위한 노드 사이클링(노드의 자동 차단, 배수 및 교체)아니요
Cloud Guard 컨테이너 보안 구성아니요
유연하고 관리되는 클러스터 애드온아니요
세분화된 애드온 배포/구성아니요
콘솔 및 기타 인터페이스에서 필수 및 선택적 추가 기능을 관리할 수 있습니다.아니요
애드온 버전 선택 및 자동 업데이트아니요
사용자 관리 애드온 가능
워크로드 ID(포드/컨테이너에 대한 세분화된 OCI IAM)아니요
사용자/인스턴스 정책 기반 권한
클러스터 수 또는 클러스터당 노드 수 증가를 요청할 수 있습니다.아니요
더 높은 작업자 노드 제한아니요
재정적으로 지원되는 SLA아니요
서비스 수준 목표(SLO)만아니요
향상된 클러스터로 업그레이드 가능해당 없음예(클러스터는 VCN 기반이어야 함)
기본 생성 유형(콘솔)아니요(선택하지 않은 경우)
기본 생성 유형(CLI/API)아니요(선택하지 않은 경우)

image

Comparing Enhanced Clusters with Basic Clusters

2. 생성 확인

2.1. OKE Cluster

image

2.2. Node pools

image image


Supported Images (Including Custom Images) and Shapes for Worker Nodes

Cordoning and Draining Managed Nodes Before Shut Down or Termination

Scheduling, Preemption and Eviction

Comparing Enhanced Clusters with Basic Clusters

This post is licensed under CC BY 4.0 by the author.