Karmada를 사용하여 여러 OKE 클러스터에서 작업 로드 관리

소개

Karmada(Kubernetes Armada의 약어)는 애플리케이션을 변경할 필요 없이 여러 Kubernetes 클러스터 및 클라우드 환경에서 클라우드 전용 애플리케이션을 원활하게 실행할 수 있는 관리 플랫폼입니다. Karmada는 Kubernetes 네이티브 API와 고급 스케줄링 기능을 활용하여 진정한 개방형 멀티 클라우드 Kubernetes 환경을 제공합니다.

멀티 클라우드 및 하이브리드 클라우드 사용 사례를 위해 설계된 Karmada는 클러스터 전반에서 애플리케이션을 관리하기 위한 턴키 자동화를 제공합니다. 핵심 기능으로는 중앙 집중식 관리, 고가용성, 자동화된 장애 복구, 지능형 트래픽 스케줄링이 있습니다.

목표

필수 조건

작업 1: 데모에 필요한 리소스 만들기

주: 다음 단계에서는 데모 중 사용될 3개의 OKE 클러스터 및 1개의 VM을 배치하는 방법을 보여줍니다.

  1. github에서 terraform 파일을 포함하는 릴리스 zip(karmada-on-oke)을 다운로드합니다.

  2. Oracle Resource Manager를 사용하여 스택을 생성하고 적용합니다.

    1. 햄버거 메뉴를 사용하여 Oracle Resource Manager로 이동합니다.
    2. Stacks을 선택합니다.
    3. Create stack을 선택합니다.
    4. My configuration을 선택합니다.
    5. My configuration 섹션에서 Zip file가 선택되었는지 확인합니다. 이전에 다운로드한 zip 파일을 선택합니다. Upload을 선택합니다.
    6. 스택에 의미 있는 이름을 지정합니다.
    7. Next을 선택합니다.
    8. VM 접속에 사용할 SSH 퍼블릭 키를 선택합니다.
    9. 리소스를 생성할 컴파트먼트를 선택합니다.
    10. Next을 선택합니다.
    11. 다음 화면에서 Run apply을 선택합니다.
    12. Create을 선택합니다.
  3. VM의 퍼블릭 IP를 가져옵니다.

    이전 단계의 작업이 성공적으로 실행되면 로그의 마지막 행에 VM의 공용 IP가 포함되어야 합니다. 나중에 사용할 수 있도록 기록합니다.

작업 2: 호스트 클러스터에 Karmada 설치

  1. 이전에 얻은 IP를 사용하여 ssh를 사용하여 VM에 연결합니다.
    ssh -i <private-ssh-key> opc@<public-IP>
    
  2. 루트 사용자로 전환:

    sudo su -
    
  3. 호스트 클러스터에 karmada 구성 요소 설치:

    karmadactl init
    

작업 3: OKE 클러스터 멤버 조인

  1. 클러스터 조인 member1:

       karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config  join member1 --cluster-kubeconfig=$HOME/.kube/config-k1
    
  2. 클러스터 조인 member2:

       karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config  join member2 --cluster-kubeconfig=$HOME/.kube/config-k2
    
  3. 멤버 클러스터 표시:

    karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config  get clusters
    

작업 4: Karmada에 작업 로드 배치

  1. karmada-api 서버를 가리키도록 KUBECONFIG를 설정합니다.

    export KUBECONFIG=/etc/karmada/karmada-apiserver.config
    
  2. 배치 및 해당 전달 정책을 생성합니다.

    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
    
  3. 다음 배치를 확인합니다.

    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   Y
    

    3개의 포드 중 2개는 member2에서, 1개는 member1에서 실행되고 있습니다.

작업 5: 정리

  1. 호스트 클러스터에서 karmada 구성 요소 제거:
karmadactl --kubeconfig /root/.kube/config deinit
  1. Terraform 스택을 사용하여 생성된 리소스를 삭제합니다.

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.