주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
용량 유형이 다른 OCI Kubernetes 엔진을 관리하고 선점 가능한 노드에서 일반적인 문제 해결
소개
디지털 전환의 각 주기를 계속하면서 기업은 계속해서 혁신과 반복을 통해 대규모 인프라, 애플리케이션 및 관리에 가능한 한계를 뛰어넘습니다. 인프라 및 애플리케이션 관리를 지원하는 데 사용되는 가장 최근의 널리 채택된 기술 중 하나는 Kubernetes입니다. Kubernetes를 자세히 살펴보기 전에 먼저 컨테이너의 개념에 대해 살펴봐야 합니다.
컨테이너는 응용 프로그램의 안정적인 실행을 지원하는 데 필요한 런타임 및 프로그램 라이브러리와 함께 응용 프로그램 특정 코드 모음을 포함하는 소프트웨어 패키지입니다. 컨테이너는 기본 서버의 OS(운영 체제) 내의 사용자 공간 내에서 실행되도록 구성됩니다. 이 아키텍처를 사용하면 애플리케이션의 핵심 서비스와 종속성을 가볍게 배포할 수 있습니다. 애플리케이션 컨테이너화의 이점에는 워크로드 격리, 리소스 효율성, 확장성 및 내결함성 개선이 포함됩니다.
컨테이너의 성능과 효율성을 대규모로 활용하려면 컨테이너 기반 배포를 인터페이스화하거나 관리하기 위한 일종의 툴이 필요합니다. Kubernetes(K8s라고도 함)는 컨테이너를 실행, 확장 및 사용자에게 전달할 수 있는 서버 클러스터를 생성하여 컨테이너 배포를 자동화하는 오픈 소스 컨테이너 오케스트레이션 도구입니다. Kubernetes 클러스터 아키텍처에는 마스터 노드(제어 플레인) 및 다중 작업자 노드가 포함됩니다. 각 작업자는 애플리케이션을 전달하는 Pod/s(컨테이너 모음)를 호스트합니다.
목표
- 다양한 용량 유형에 대해 Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes Engine 또는 OKE)을 사용하여 선점 가능한 일반적인 문제를 해결합니다.
필요 조건
- 실행 중인 OCI 테넌시 및 OKE 클러스터에 대한 관리자 액세스 권한입니다.
Oracle은 컨테이너 기술로 어떻게 포지셔닝됩니까?
OKE는 확장 가능한 완전 관리형 고가용성 Kubernetes 서비스로, 고객이 컨테이너화된 애플리케이션을 클라우드에 배포할 수 있도록 지원합니다. OKE는 OCI 고객에게 컴퓨트 리소스 활용도를 최적화하여 고유한 워크로드 요구사항을 충족하고, 워크로드 요구사항의 변화에 빠르게 대응할 수 있는 기능을 제공합니다. OKE는 고객에게 탁월한 가격 대비 성능, 리소스 효율성, 이식성 및 안정성을 제공하는 원활한 고객 경험을 제공합니다. OKE는 컨테이너 레지스트리, CI/CD 프레임워크, 네트워킹 솔루션, 스토리지 옵션, 최고 수준의 보안 기능 등 다양한 컨테이너 라이프사이클 관리 제품과 여러 가지 주요 통합을 제공합니다.
OKE에서 클러스터 유형을 기본 또는 고급 클러스터로 지정할 수 있습니다. 기본 클러스터는 OKE에서 제공하는 모든 핵심 기능을 지원합니다. 추가 기능을 지원하기 위해 고급 클러스터는 가상 노드, 자체 관리 노드, 클러스터 추가 기능 관리, 보다 세분화된 Oracle Cloud Infrastructure Identity and Access Management(OCI IAM) 구성 등 사용 가능한 모든 기능을 지원합니다.
다른 용량 유형에 대한 OKE
-
온디맨드 용량: 온디맨드 용량은 지정된 구성 유형의 표준 가용 용량입니다. 기본 용량 유형이며 실제로 사용한 만큼 비용을 지불합니다. 이는 구성 유형 및 타이밍에 따라 표준 선택이지만 대규모 다중 인스턴스 작업 로드에 대해 이러한 요청을 이행하는 데 어려움이 있을 수 있습니다.
-
예약된 용량: 용량 예약을 사용하여 OKE 관리 노드를 프로비전할 수 있습니다. 용량 예약은 일반적으로 계획된 유지보수, 사용자 수요 증가, 재해 복구 등 운영에 영향을 미치는 이벤트 동안 비즈니스 크리티컬 워크로드에 충분한 가용 용량을 확보하는 데 사용됩니다. 예약된 리소스가 활발히 사용되지 않는 동안 용량 예약은 SKU 정가의 85%를 차지합니다. 용량 예약을 활용하려면 먼저 용량 예약 객체를 생성하고 영역/가용성 도메인을 구성 유형 및 크기와 함께 지정해야 합니다. 용량 예약이 생성된 경우 노드 풀에 노드를 배치할 때 특정 예약을 용량 유형으로 지정할 수 있습니다.
-
선점 가능 용량: 이제 OKE 관리 노드를 선점 가능 컴퓨트 구성으로 프로비전할 수 있습니다. 선점 가능 구성은 비용 절감(SKU 정가에서 50% 할인)의 원천이 될 수 있지만, Oracle은 우선순위가 높은 수요를 위해 필요할 때 또는 필요할 때 이러한 컴퓨트 리소스를 회수할 수 있는 권리를 유지합니다. 중단을 견딜 수 있는 Stateless 내결함성 워크로드가 있는 경우 선점 가능한 컴퓨트가 좋은 옵션일 수 있습니다. 가시성을 위해 선점 가능한 컴퓨팅을 배포할 때 인스턴스가 종료될 때 통지를 받도록 선택할 수 있습니다. OKE 클러스터 내에서 노드 풀 예상 상태는 재생 이용된 인스턴스를 교체하기 위해 새 인스턴스를 실행하려고 시도합니다.
OKE 배치(선점 가능 및 OnDemand 노드 풀 포함)
선점 가능한 알려진 이슈
OKE에서 선점 가능을 사용할 때 몇 가지 알려진 문제가 있습니다.
-
문제: 일부 고객에게 오류 NonRetryable BmcException: Compute 서비스의 LaunchInstance 작업으로 반환된 오류입니다. (400, InvalidParameter, false) E3/E4 선점 가능 구성을 생성하는 동안 용량 예약 ID로 선점 가능 인스턴스를 실행할 수 없습니다.
- 해결 방법: 빈
<capacityreservationId>
및 선점 가능한 워커 노드가 있는 알려진 OKE 버그가 있습니다. 배치 구성 섹션의 일부로<capacityReservationId>
매개변수를 전달하지 않고 Oracle Cloud Infrastructure 명령행 인터페이스(OCI CLI) 또는 terraform을 통해 노드 풀을 생성할 때 선점 가능 용량을 사용하려고 시도하면 선점 가능 워커 노드를 생성할 수 있습니다. 그러나 콘솔을 통해 노드 풀을 생성할 경우 비어 있는<capacityReservationId>
가 기본적으로 전달되므로 선점 가능한 구성을 사용하려고 할 때 오류가 발생합니다. 임시해결책은 배치 구성에서<capacityReservationId>
를 널로 명시적으로 설정하는 것입니다.
- 해결 방법: 빈
-
문제: 두 개의 노드 풀(선점 가능 풀을 사용하는 풀, 온디맨드를 사용하는 풀)을 사용하고 자동 스케일러에 우선 순위 기반 확장기를 활용합니다. 선점 가능한 노드 풀이 선점 가능한 용량의 OutOfHostCapacity 오류로 인해 선점 가능한 노드 풀에 비정상으로 표시되는 경우 사용할 선점 가능한 노드 풀을 가장 높은 우선 순위로 구성합니다. 어떤 경우에는 노드 풀에 노드가 0인 경우 선점 가능한 노드 풀이 비정상인 경우에도 클러스터 자동 스케일러가 요청 시 노드 풀로 폴백되지 않습니다.
- 해결 방법: 이 설정은 작동하지만 두 노드 풀에 각각 최소 1개의 노드가 있는 경우에만 작동합니다.
-
문제: 콘솔을 통해 OKE 프로비전 마법사에서 선점 가능한 용량을 선택할 때 사용 가능한 AMD 구성은 E3 및 E4로 제한됩니다. E5는 여기에 표시되지 않지만 OKE에 대해 E5 선점 가능 용량이 지원됩니다.
-
해결 방법: API 또는 CLI를 사용하여 선점 가능한 E5 구성으로 관리 노드 풀을 생성합니다.
--node-shape VM.Standard.E5.Flex
-
작업 1: CLI(명령행 인터페이스)를 사용하여 E5 선점 가능 OKE 작업자 노드 풀을 생성하는 단계
-
OCI 콘솔에 로그인하여 services 메뉴를 누릅니다.
-
개발자 서비스로 이동합니다.
-
컨테이너 및 아티팩트에서 OKE(Kubernetes Engine) 누르기를 누릅니다.
-
CLI를 표시하려면 OCI Cloud Shell을 누릅니다.
-
테넌시에서 다음 CLI 명령을 실행하기 전에
node-pool
OCID,compartment
OCID,subnet-id
,fault domain
, 구성 및 크기를 편집합니다.oci ce node-pool create --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaxlokvt2r25b6dmdxxxxxxxxxxxxxxxxxkhdilj7kpehc5vke2ve5gq --compartment-id ocid1.compartment.oc1..aaaaaaaaqufgrkgzr4zb3dxxxxxxxxxxxxxxxxxxp7jx7yckglghxppfrui6a --name E5_Preemtible --node-shape VM.Standard.E5.Flex --placement-configs '[{"availabilityDomain": "FZyT:US-ASHBURN-AD-2", "preemptibleNodeConfig": {"preemptionAction":{"isPreserveBootVolume":true, "type": "TERMINATE"}}, "subnet-id": "ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhu72xxxxxxxxxxxxxxxxxxxxtlkp4dmixebzhgrwdlmtteclq", "faultDomains":["FAULT-DOMAIN-1"]}]' --size 1 --node-image-id ocid1.image.oc1.iad.aaaaaaaajvtta4i5sq4xxxxxxxxxxxxxcskfxjwz4vwxz6ersmmax6q --node-shape-config '{"memoryInGBs": 6.0, "ocpus": 1.0}' --pod-subnet-ids '["ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhxxxxxxxxxxxxxxxkp4dmixebzhgrwdlmtteclq"]'
다음 이미지와 같이 노드 풀 생성을 위한 작업 요청의 OCID를 출력하고 기존 클러스터에 E5 선점 가능 워커 노드를 생성합니다.
관련 링크
확인
- Authors - Payal Sharma(Senior Enterprise Cloud Architect), Anthony Vernava IV(Senior Enterprise Cloud Architect)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Manage OCI Kubernetes Engine with Different Capacity Types and Resolve Common Issues on Preemptible Nodes
G19915-01
November 2024