Karmada를 사용하여 여러 OKE 클러스터에서 작업 로드 관리
소개
Karmada(Kubernetes Armada의 약어)는 애플리케이션을 변경할 필요 없이 여러 Kubernetes 클러스터 및 클라우드 환경에서 클라우드 전용 애플리케이션을 원활하게 실행할 수 있는 관리 플랫폼입니다. Karmada는 Kubernetes 네이티브 API와 고급 스케줄링 기능을 활용하여 진정한 개방형 멀티 클라우드 Kubernetes 환경을 제공합니다.
멀티 클라우드 및 하이브리드 클라우드 사용 사례를 위해 설계된 Karmada는 클러스터 전반에서 애플리케이션을 관리하기 위한 턴키 자동화를 제공합니다. 핵심 기능으로는 중앙 집중식 관리, 고가용성, 자동화된 장애 복구, 지능형 트래픽 스케줄링이 있습니다.
목표
-
호스트 OKE 클러스터에
karmada구성 요소를 설치합니다. -
2 OKE 멤버 클러스터를 karmada에 조인합니다.
-
2개의 OKE 클러스터에 분산된 Pod로 배치를 생성합니다.
필수 조건
-
OCI의 활성 테넌시
-
리소스를 생성할 수 있는 충분한 권한이 있는 사용자
주: 고급 클러스터에는 작업 로드 ID만 사용할 수 있습니다.
-
리소스를 배치할 컴파트먼트가 이미 생성되었습니다.
-
컴파트먼트의 모든 VM에 대한 동적 그룹:
All {instance.compartment.id = 'ocid1.compartment.oc1...'} -
인스턴스 주체를 사용하여 OCI CLI 명령을 실행하는 정책:
allow dynamic-group <dynamic-group-name> to manage cluster-family in compartment <compartment-name>
작업 1: 데모에 필요한 리소스 만들기
주: 다음 단계에서는 데모 중 사용될 3개의 OKE 클러스터 및 1개의 VM을 배치하는 방법을 보여줍니다.
-
github에서 terraform 파일을 포함하는 릴리스 zip(karmada-on-oke)을 다운로드합니다.
-
Oracle Resource Manager를 사용하여 스택을 생성하고 적용합니다.
- 햄버거 메뉴를 사용하여 Oracle Resource Manager로 이동합니다.
Stacks을 선택합니다.Create stack을 선택합니다.My configuration을 선택합니다.My configuration섹션에서Zip file가 선택되었는지 확인합니다. 이전에 다운로드한 zip 파일을 선택합니다.Upload을 선택합니다.- 스택에 의미 있는 이름을 지정합니다.
Next을 선택합니다.- VM 접속에 사용할 SSH 퍼블릭 키를 선택합니다.
- 리소스를 생성할 컴파트먼트를 선택합니다.
Next을 선택합니다.- 다음 화면에서
Run apply을 선택합니다. Create을 선택합니다.
-
VM의 퍼블릭 IP를 가져옵니다.
이전 단계의 작업이 성공적으로 실행되면 로그의 마지막 행에 VM의 공용 IP가 포함되어야 합니다. 나중에 사용할 수 있도록 기록합니다.
작업 2: 호스트 클러스터에 Karmada 설치
- 이전에 얻은 IP를 사용하여 ssh를 사용하여 VM에 연결합니다.
ssh -i <private-ssh-key> opc@<public-IP> -
루트 사용자로 전환:
sudo su - -
호스트 클러스터에 karmada 구성 요소 설치:
karmadactl init
작업 3: OKE 클러스터 멤버 조인
-
클러스터 조인
member1:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member1 --cluster-kubeconfig=$HOME/.kube/config-k1 -
클러스터 조인
member2:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member2 --cluster-kubeconfig=$HOME/.kube/config-k2 -
멤버 클러스터 표시:
karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
작업 4: Karmada에 작업 로드 배치
-
karmada-api 서버를 가리키도록
KUBECONFIG를 설정합니다.export KUBECONFIG=/etc/karmada/karmada-apiserver.config -
배치 및 해당 전달 정책을 생성합니다.
kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/deployment.yaml kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/propagationpolicy.yaml -
다음 배치를 확인합니다.
karmadactl get deployment --operation-scope all출력은 다음과 유사해야 합니다.
# karmadactl get deployment --operation-scope all NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION nginx Karmada 3/3 3 3 22m - nginx member2 2/2 2 2 22m Y nginx member1 1/1 1 1 22m Y3개의 포드 중 2개는
member2에서, 1개는member1에서 실행되고 있습니다.
작업 5: 정리
- 호스트 클러스터에서 karmada 구성 요소 제거:
karmadactl --kubeconfig /root/.kube/config deinit
- Terraform 스택을 사용하여 생성된 리소스를 삭제합니다.
- Oracle Resource Manager로 돌아갑니다.
- 생성한 스택을 선택합니다.
Destroy을 선택합니다.
승인
- 작성자 - Daniel Dinu(주요 클라우드 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Manage Workload on Multiple OKE Clusters Using Karmada
G55120-01