TheKoguryo's 기술 블로그

 Version 2024.04.01

1.1.2 OKE 클러스터 만들기

v1.26.7, Oracle Linux 8, VCN-Native Pod Networking CNI에서 2024년 1월 7일에 테스트 되었음

Quick Create 모드로 클러스터 만들기

처음 OKE 클러스터를 만드는 단계로 실환경에서는 별도의 OKE 사용자 및 VCN 등 커스텀한 환경을 사용하겠지만, OKE를 이해하기 위한 처음 단계로 Quick Create 모드로 설치합니다.

  1. OCI 콘솔에 로그인합니다.

  2. 좌측 상단 햄버거 메뉴에서 Developer Services > Containers & Artifacts > Kubernetes Clusters (OKE)로 이동합니다.

  3. List Scope에서 생성할 Compartment를 선택합니다.

  4. 클러스터 생성을 위해 Create Cluster 버튼을 클릭합니다.

  5. 빠른 클러스터 생성을 위해 기본선택된 Quick Create 모드를 이용하여 생성된 OKE 클러스터를 통해 기본 구조를 이해하고자 합니다. 아래 Submit을 클릭합니다.

    • Quick Create

      • 아래 그림에서 설명하고 있는 것 처럼 생성될 클러스터가 속할 VCN에 자동으로 만들어지고, 필요한 자원, Kubernetes API 서브넷, 로드 밸런서 서브넷, 워커노드 서브넷 간의 Security Lists에 필요한 규칙이 자동으로 설정됩니다. 대신 생성되는 자원의 이름이 클러스터 이름을 기준으로 자동으로 정해집니다.
      • 대신 CNI는 선택 옵션없이 VCN-Native Pod Networking으로 자동 선택됩니다.
    • Custom Create

      • 클러스터 생성전에 필요한 VCN을 미리 생성해야 합니다. 관련 라우팅 규칙 및 Security List 도 사전에 설정이 필요합니다.
      • 사용자가 사전에 자원을 만들므로, 원하는 이름 규칙으로 만들 수 있습니다.
      • CNI을 OCI VCN-Native Pod Networking(OCI_VCN_IP_NATIVE) 또는 Flannel 중에 선택 가능합니다.

    image-20230516153822769

클러스터 생성 옵션
  1. 생성할 클러스터 이름을 입력합니다. 예) oke-cluster-1

  2. 설치될 Compartment를 선택합니다.

  3. 클러스터의 쿠버네티스 버전을 선택합니다. 예) v1.26.7

  4. Kubernetes API Endpoint

    • 인터넷 상에서 Kubernetes API를 접속할 수 있게 기본 선택된 Public Endpoint를 그대로 사용
    • Kubernetes API를 Private IP만 할당할지, Public IP도 할당할 지를 선택합니다. Quick Create로 설치하게 되면, 이 선택에 따라 Kubernetes API가 위치하는 서브넷이 Private Subnet 또는 Public Subnet으로 만들어 질지가 정해집니다.
  5. Node type

    • Managed: 선택하지 않아도 기본 값입니다. Worker Nodes를 SSH로 접속할 수 있고, 사용자가 관리합니다.
    • Virtual: Serverless로 사용자가 Worker Nodes에 대한 스케일, 업그레이드 등을 하지 않습니다. Enhanced Cluster에서만 가능합니다.
  6. Kubernetes Worker Nodes

    • Worker Nodes를 접속할 수 있는 방법을 선택합니다. 기본 선택된 Private Workers를 그대로 사용
    • 생성되는 Worker Nodes를 Private IP로 오픈할지, Public IP로 오픈 할지를 선택할 지를 선택합니다. Quick Create로 설치하게 되면, 이 선택에 따라 Worker Nodes가 위치하는 서브넷이 Private Subnet 또는 Public Subnet으로 설정될 지가 정해집니다.

    image-20240107230214943

  7. Shape Worker Node로 사용할 Shape을 지정합니다. 기본 선택된 Flex Shape에서 필요에 따라 OCPU, Memory를 조정합니다.

    image-20240107230342470

  8. Image

    • 쿠버네티스 버전 선택이 그에 해당되는 노드 버전이 기본적으로 선택됩니다. 필요한 경우에만 변경합니다.
  9. Node count

    Worker Nodes 갯수를 지정합니다. 기본 값을 3개입니다.

    Control Plane Nodes는 OCI가 관리하는 영역으로 별도 크기 등을 지정하지 못하며, 기본적으로 다중화되어 있습니다.

  10. Show advanced options을 클릭합니다

    • Boot Volume

      boot volume 사이즈를 조정할 수 있습니다. Worker Nodes에 실행될 컨테이너 이미지가 다운로드 되기 때문에, 애플리케이션 컨테이너 수와 이미지가 큰 경우, 그에 맞게 늘릴 필요가 있습니다.

    • Add an SSH Key

      트러블 슈팅 등을 위해 Worker Node에 SSH로 접근하기 위해서는 SSH Key 등록이 필요합니다. 사용할 SSH Key의 Public Key를 아래와 같이 등록합니다.

    image-20230516155459497

  11. 클러스터 생성 정보를 모두 입력하였습니다. 아래 Next를 클릭

  12. 기본적으로 Enhanced Cluster 타입이 선택됩니다. 여기서는 Basic Cluster 사용을 위해 화면 제일 아래 Basic Cluster Confirmation에서 Create a Basic cluster를 클릭합니다.

    image-20230516155854096

  13. Review

    • Cluster

      Basic Cluster 선택되었는지 확인할 것. Basic Cluster에도 필수 애드온은 설치됨.

      image-20240107230724557

    • Network

    • Node pools

      Node pool Version과 Image 버전이 동일한 지 확인합니다. Network type은 OCI_VCN_IP_NATIVE로 설치됩니다.

      image-20240107230808737

  14. 리뷰 후 클러스터를 생성합니다.

  15. 클러스터 생성 및 관련 네트워크 자원

    아래 그림과 같이 Quick Create로 클러스터를 생성시 기본 네트워크 자원이 함께 생성되는 것을 볼수 있습니다.

    image-20230516164606086

클러스터 생성 확인
  1. 생성이 요청되면, 클러스터 생성, 노드 풀 생성, Worker Node 생성 및 구성 순으로 진행됩니다.

  2. 클러스터 상세정보에서 Resources > Node Pools를 보면 생성된 pool을 볼 수 있습니다.

    image-20240107232200556

  3. 생성된 Node Pool인 pool1을 클릭하여 Node Pool 상세 정보로 이동합니다.

  4. Node Pool 상세 정보에서 Resources > Nodes 정보를 보면 생성된 Worker Nodes를 확인할 수 있습니다. VM 생성후 쿠버네티스 구성 시간이 있어 Ready 상태가 될 때까지 약간의 시간이 걸립니다. 테스트 환경에서는 노드가 모두 Ready 될때 까지 10분 정도 걸렸습니다.

    image-20240107232331002

더 다양한 클러스터 및 네트워크 구성 예시

Example Network Resource Configurations에서 Kubernetes API Endpoint, Worker Nodes, Service Load Balancer에 대한 몇 가지 조합을 한 예시를 확인할 수 있습니다. 이 조합들 중에서 여기서 만는Quick Create 모드에서 Public Endpoint, Private Workers를 선택하였고, Service Load Balancer는 기본 생성시는 Public이며 Kubernetes에서 Load Balancer 생성시 선택할 수 있습니다.



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 7 Jan 2024