참고:
- 이 자습서는 Oracle에서 제공하는 무료 실습 환경에서 사용할 수 있습니다.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 마치면 이 값을 클라우드 환경에 고유한 값으로 대체하십시오.
Oracle Cloud Native Environment로 외부 로드 밸런서 배포
소개
Oracle Cloud Native Environment는 클라우드 네이티브 애플리케이션의 개발 및 관리를 위한 완벽한 통합 제품군입니다. Kubernetes 모듈은 핵심 모듈입니다. 컨테이너를 배포 및 관리하고 CRI-O, runC 및 Kata 컨테이너를 자동으로 설치 및 구성하는 데 사용됩니다. CRI-O는 Kubernetes 클러스터에 대한 컨테이너 런타임을 관리합니다. 런타임은 runC 또는 Kata Containers일 수 있습니다.
목표
이 자습서/연습서에서는 다음을 수행하는 방법을 설명합니다.
- Oracle Cloud Infrastructure 로드 밸런서로 Kubernetes 클러스터를 구성하여 고가용성 확보
- 5노드 클러스터에서 Oracle Cloud Native Environment 구성
- 제어 플레인 노드 간 로드 밸런서 복구가 성공적으로 완료되었는지 확인
지원 참고 사항: 운용 배치에 Oracle Cloud Instructure 로드 밸런서와 같은 외부 로드 밸런서를 사용하는 것은 IS가 권장됩니다.
필요 조건
이 자습서의 단계를 수행할 호스트 시스템이 이 절에 나열되어 있습니다. 필요한 사항:
-
다음과 같이 사용할 Oracle Linux 시스템 6개:
- 운영자 노드(ocne-operator)
- 3개의 Kubernetes 컨트롤 플레인 노드(ocne-control01, ocne-control02, ocne-control03)
- Kubernetes 작업자 노드 2개(ocne-worker01, ocne-worker02)
- kubectl이 설치된 Oracle Linux 시스템 1개(sysop01)
주: 운용 환경에서는 콘트롤 플레인 노드가 5개 이상이고 워커 노드가 3개 이상인 클러스터가 있는 것이 좋습니다.
-
각 시스템에는 최소한 다음 항목이 설치되어 있어야 합니다.
- UEK R6(Unbreakable Enterprise Kernel Release 6)를 설치하고 실행하는 최신 Oracle Linux 8(x86_64)
-
이 환경은 다음과 같이 사전 구성되어 있습니다.
oracle
사용자 계정 만들기(설치 중 사용됨)oracle
계정sudo
접근 권한이 부여되었습니다.- 인스턴스 간에 키 기반 SSH(암호 없는 SSH라고도 함) 설정
- Oracle Cloud Native Environment 릴리스 1.5가 설치되었지만 생성된 환경이 없음
실습 환경 설정
주: 무료 실습 환경을 사용하는 경우 연결 및 기타 사용 지침은 Oracle Linux Lab Basics를 참조하십시오.
이 실습에서는 각각 다른 단계를 수행해야 하는 여러 시스템이 포함됩니다. 먼저 터미널 창 또는 탭을 열고 다음 노드에 연결하는 것이 좋습니다. 이렇게 하면 반복적으로 로그인 및 로그아웃할 필요가 없습니다. 노드는 다음과 같습니다.
- ocne-operator
- 다음 중 하나:
- ocne-control01
- ocne-control02
- ocne-control03
- sysop01
-
터미널을 열고 ssh를 통해 각 노드에 연결합니다.
ssh oracle@<ip_address_of_ol_node>
로드 밸런서 설정(선택사항)
주: 무료 실습 환경을 사용하는 경우 초기 실습 배포 단계에서 해당 단계가 완료되었으므로 섹션에 나와 있는 단계가 필요하지 않습니다. 대신 Luna 실습 사용자는 다음 페이지로 바로 이동해야 합니다. 플랫폼 CLI 구성 파일 생성을 수행하고 계속 진행합니다. 그렇지 않으면 자체 Oracle Cloud Infrastructure 테넌시에 이러한 단계를 복제하려는 사용자를 위해 이 구성을 구성하는 방법의 세부정보가 제공됩니다.
Oracle Cloud Infrastructure 로드 밸런서 생성
-
Cloud 콘솔에 로그인합니다.
-
햄버거 메뉴(왼쪽 위)와 Networking 및 Load Balancers를 차례로 누릅니다.
-
로드 밸런서 페이지가 표시됩니다.
-
드롭다운 목록에서 사용 중인 구획을 찾습니다.
-
로드 밸런서 생성 단추를 누릅니다.
-
팝업 대화상자에서 로드 밸런서 생성 단추를 눌러 기본 로드 밸런서 유형을 선택합니다.
로드 밸런서 업데이트 세부정보
-
기본 Visibility type 섹션을 찾아 Private 옵션을 누릅니다.
-
페이지 아래로 스크롤하여 Choose Networking(네트워킹 선택) 섹션을 찾습니다.
-
Visual Cloud Network 및 서브넷에 대한 드롭다운 목록 상자에 제공된 값을 선택합니다.
주: 이미지에 표시된 값은 Lab이 시작될 때마다 달라집니다.
-
다음 단계로 이동하려면 다음을 누릅니다.
Load Balancer Policy 및 Protocol 설정
-
이제 로드 균형 조정 정책 및 건전성 검사 프로토콜을 설정합니다.
- 기본 로드 밸런싱 정책인 가중 라운드 로빈 수락
-
Specify Health Check Policy 섹션에서 표시된 설정을 입력합니다.
- 프로토콜에서 TCP를 선택합니다.
- Port 값을 80에서 6443으로 변경합니다.
백엔드 노드 추가
-
백엔드 추가 단추를 누르면 창이 열립니다.
-
다음 노드를 선택하고 Add Selected Backends 버튼을 누릅니다.
- ocne-control01
- ocne-control02
- ocne-control03
-
새로 선택한 각 백엔드 서버의 포트 열을 기본값 80에서 6443으로 업데이트합니다.
-
Next 버튼을 눌러 다음 단계를 진행합니다.
로드 밸런서 리스너 구성
-
TCP 버튼을 선택합니다.
-
ingress traffic에 사용되는 Port를 443에서 6443으로 변경합니다.
입력한 값은 이 이미지와 같아야 합니다.
-
다음 단추를 누릅니다.
로드 밸런서 로깅 구성
-
설정 프로세스 중 마지막 단계는 로깅 관리 옵션입니다.
이 시나리오에는 변경이 필요하지 않으므로 제출 단추를 눌러 로드 밸런서를 생성합니다.
로드 밸런서 정보
-
생성된 후에는 새로 생성된 로드 밸런서의 개요 페이지가 표시됩니다.
주: 전체 건전성 및 백엔드 집합 건전성 섹션은 OK(녹색)로 표시되지 않을 수 있습니다. 그 이유는 Oracle Cloud Native Environment가 Kubernetes 컨트롤 플레인 및 작업자 노드에서 아직 생성되지 않았기 때문입니다. 다음 단계에서는 이 문제를 해결합니다.
플랫폼 CLI 구성 파일 만들기
관리자는 구성 파일을 사용하여 환경 및 모듈 생성 및 관리를 간소화할 수 있습니다. 적합한 YAML 구문으로 작성된 구성 파일에는 생성할 환경 및 모듈에 대한 모든 정보가 포함됩니다. 구성 파일을 사용하면 반복되는 Platform CLI 명령 옵션 항목이 저장됩니다.
참고: Oracle Cloud Native Environment를 구성하는 데 사용된 myenvironment.yaml에 둘 이상의 제어 플레인 노드를 입력한 경우 olcnectl이 로드 밸런서의 세부정보(이 경우에는 Oracle Cloud Infrastructure 로드 밸런서)를 myenvironment.yaml 파일에 입력해야 합니다. myenvironment.yaml에 새 인수(
load-balancer: <enter-your-OCI-LB-ip-here>
)를 입력하여 이 작업을 수행합니다.
예제 구성 파일:
environments: - environment-name: myenvironment globals: api-server: 127.0.0.1:8091 secret-manager-type: file olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert olcne-node-key-path: /etc/olcne/configs/certificates/production/node.key modules: - module: kubernetes name: mycluster args: container-registry: container-registry.oracle.com/olcne load-balancer: 10.0.0.<XXX>:6443 master-nodes: ocne-control01:8090,ocne-control02:8090,ocne-control03:8090 worker-nodes: ocne-worker01:8090,ocne-worker02:8090 selinux: enforcing restrict-service-externalip: true restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key
실습 배치 중에 구성 파일이 자동으로 생성되어 연습에서 사용할 준비가 됩니다. 구성 파일 수동 만들기에 대한 자세한 내용은 Using a Configuration File 설명서를 참조하십시오.
구성 파일 업데이트
-
(ocne-operator에서) 구성 파일 내용을 봅니다.
cat ~/myenvironment.yaml
-
(ocne-operator에서) load balancer IPv4 주소 값을 myenvironment.yaml 파일에 추가합니다.
LB_IP=$(oci lb load-balancer list --auth instance_principal --compartment-id $COMPARTMENT_OCID | jq -r '.data[]."ip-addresses"[]."ip-address"') sed -i "14i\ load-balancer: $LB_IP:6443" ~/myenvironment.yaml
위 명령이 성공하려면 운영자 노드에서 다음 준비 단계를 수행해야 합니다. 이러한 단계는 무료 실습 배포의 일부로 수행됩니다.
-
Oracle Cloud Infrastructure CLI를 설치했습니다.
-
Oracle Cloud Native Environment를 배포하는 구획의 OCID를 조회합니다.
-
이러한 환경 변수를 사용자
~/.bashrc
파일에 추가했습니다.COMPARTMENT_OCID=<compartment_ocid>
LC_ALL=C.UTF-8
LANG=C.UTF-8
-
-
(ocne-operator에서 load balancer 값이 myenviroment.yaml 파일에 추가되었는지 확인합니다.
cat ~/myenvironment.yaml
환경 및 Kubernetes 모듈 생성
-
(ocne-operator에서) 환경을 만듭니다.
cd ~ olcnectl environment create --config-file myenvironment.yaml
예제 출력:
[oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml Environment myenvironment created.
-
(ocne-operator에서) Kubernetes 모듈을 만듭니다.
olcnectl module create --config-file myenvironment.yaml
예제 출력:
[oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml Modules created successfully.
-
(ocne-operator에서) Kubernetes 모듈을 검증합니다.
olcnectl module validate --config-file myenvironment.yaml
예제 출력:
[oracle@ocne-operator ~]$ olcnectl module validate --config-file myenvironment.yaml Validation of module mycluster succeeded.
이 무료 실습 환경에서는 검증 오류가 없습니다. 오류가 있을 경우 노드 수정에 필요한 명령이 이 명령의 출력으로 제공됩니다.
-
(ocne-operator에서) Kubernetes 모듈을 설치합니다.
olcnectl module install --config-file myenvironment.yaml
주: Kubernetes를 노드에 배치하는 작업을 완료하는 데 몇 분 정도 걸립니다.
예제 출력:
[oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml Modules installed successfully.
-
(ocne-operator에서) Kubernetes 모듈의 배치를 확인합니다.
olcnectl module instances --config-file myenvironment.yaml
예제 출력:
[oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml INSTANCE MODULE STATE mycluster kubernetes installed ocne-control01:8090 node installed ocne-control02:8090 node installed ocne-control03:8090 node installed ocne-worker01:8090 node installed ocne-worker02:8090 node installed [oracle@ocne-operator ~]$
kubectl 설정
-
(ocne-controlxx 노드에서)
kubectl
명령을 설정합니다.mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
-
(sysop01에서)
kubectl
명령을 설정합니다.-
제어 플레인 노드 중 하나에서 구성 파일을 복사합니다.
mkdir -p $HOME/.kube ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
-
kubectl
명령에서 사용할 구성을 내보냅니다.sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
-
-
(sysop01에서)
kubectl
가 작동하는지 확인합니다.kubectl get nodes
예제 출력:
[oracle@sysop01 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 Ready control-plane,master 5m10s v1.23.7+1.el8 ocne-control02 Ready control-plane,master 3m33s v1.23.7+1.el8 ocne-control03 Ready control-plane,master 4m29s v1.23.7+1.el8 ocne-worker01 Ready <none> 3m15s v1.23.7+1.el8 ocne-worker02 Ready <none> 3m8s v1.23.7+1.el8 [oracle@sysop01 ~]$
로드 밸런서가 제어 플레인 노드 장애를 관리하는지 확인
외부 로드 밸런서 뒤의 세 가지 컨트롤 플레인 노드가 있는 Oracle Cloud Native Environment 설치가 완료되었습니다.
다음 절에서는 제어 플레인 노드가 실패할 경우 외부 로드 밸런서가 이를 감지하여 라운드 로빈 트래픽 분배 정책에서 제거하는 것을 확인합니다. 마지막 테스트 단계는 '누락된' 노드가 복구될 때 자동으로 클러스터를 재결합하고 클러스터 기반 트래픽을 다시 한 번 처리할 수 있음을 보여줍니다.
로드 밸런서가 활성 상태인지 확인
무료 실습 환경을 사용 중인 경우 Oracle Linux Lab Basics 설명서에 나와 있는 대로 클라우드 콘솔에 사인인합니다.
로드 밸런서 세부 정보 액세스
-
아직 접속되지 않은 경우 클라우드 콘솔에 로그인합니다.
-
햄버거 메뉴(왼쪽 위)와 Networking 및 Load Balancers를 차례로 누릅니다.
-
그러면 로드 밸런서 페이지가 표시됩니다.
-
드롭다운 목록에서 사용 중인 구획을 찾습니다.
이 단계에 대한 지침이 필요한 경우 자세한 내용은 Oracle Linux Lab Basics를 참조하십시오.
-
미리 생성된 로드 밸런서 요약 세부 정보는 이 이미지와 유사해야 합니다.
-
ocne-load-balancer 링크를 누릅니다.
-
브라우저 왼쪽의 Resources 머리글 아래에 있는 Backend Sets 링크로 스크롤합니다.
-
백엔드 집합 링크를 누릅니다.
-
기존 백엔드 집합에 대한 링크가 표시됩니다. 링크를 누릅니다(이 예에서는 ocne-lb-backend-set).
-
브라우저 왼쪽의 Resources 머리글 아래에서 Backends 링크를 누릅니다.
-
화면에 세 개의 정상 노드가 있음을 확인합니다.
제어 플레인 노드 인스턴스 중 하나 중지
-
햄버거 메뉴(왼쪽 상단)를 누르고 Compute, Instances로 차례로 이동합니다.
-
인스턴스 페이지가 표시됩니다.
-
나열된 제어 플레인 노드(예: ocne-control01) 중 하나를 누릅니다.
-
인스턴스 세부정보가 표시됩니다.
-
*Stop 버튼을 누릅니다.
-
팝업 대화상자에서 즉시 전원을 꺼서 인스턴스 강제 정지 체크 박스를 선택한 다음 인스턴스 강제 정지 단추를 누릅니다.
주: 운용 중인 시스템에서는 데이터 손실, 손상 또는 전체 시스템 악화가 발생할 수 있으므로 이 작업을 수행하지 마십시오.
-
인스턴스 세부정보 페이지에서 인스턴스가 정지됨 상태임을 확인할 때까지 기다립니다.
Oracle Cloud Infrastructure 로드 밸런서가 제어 플레인 노드 실패를 등록하는지 확인
-
네트워킹 > 로드 밸런서로 이동합니다.
-
ocne-load-balancer 링크를 누릅니다.
-
왼쪽 하단 패널의 리소스에서 백엔드 집합을 누릅니다.
-
그런 다음 백엔드 집합 테이블에 표시된 이름을 누릅니다(예: ocne-lb-backend-set).
-
백엔드를 눌러 노드를 표시합니다.
이 페이지의 상태가 자동으로 갱신됩니다. 일반적으로 표시된 상태가 변경되는 데 2-3분 정도 걸립니다.
-
표시되는 초기 보고 단계는 경고 상태여야 합니다.
-
몇 분 후(~2-3분) 상태가 위기 상태로 업데이트됩니다. 즉, Oracle Cloud Infrastructure 로드 밸런서 프로세스에서 노드가 응답하지 않는 것으로 확인되므로 로드 밸런서가 더 이상 수신 요청을 사용할 수 없는 백엔드 제어 계획 노드로 전달하지 않습니다.
Oracle Cloud Native Environment 클러스터 응답 확인
클러스터에 활성 멤버가 두 개 이상 남아 있는 경우 활성 제어 플레인 노드가 kubectl
명령에 응답해야 합니다.
-
(sysop01에서)
kubectl
가 응답하는지 확인하고 방금 중지된 제어 플레인 노드를NotReady
(사용할 수 없음)으로 보고합니다.kubectl get nodes
예제 출력:
[oracle@sysop01 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 NotReady control-plane,master 26m v1.23.7+1.el8 ocne-control02 Ready control-plane,master 25m v1.23.7+1.el8 ocne-control03 Ready control-plane,master 24m v1.23.7+1.el8 ocne-worker01 Ready <none> 24m v1.23.7+1.el8 ocne-worker02 Ready <none> 26m v1.23.7+1.el8 [oracle@sysop01 ~]$
주:* **NotReady 상태가 표시되기 2-3분 전일 수 있습니다. 상태가 준비됨에서 NotReady으로 변경될 때까지 주기적으로
kubectl get nodes
명령을 반복하십시오.
정지된 제어 플레인 노드 재시작
-
Compute > Instances로 이동합니다.
-
이전에 중지된 제어 플레인 노드를 누릅니다.
-
시작 단추를 눌러 인스턴스를 시작합니다.
Status 섹션이 Green으로 바뀌고 Instance가 Running 상태인지 확인할 때까지 기다립니다.
제어 플레인 노드가 Oracle Cloud Infrastructure 로드 밸런서 클러스터를 재결합하는지 확인
-
네트워킹 > 로드 밸런서로 이동합니다.
-
ocne-load-balancer 링크를 누릅니다.
-
왼쪽 하단 패널의 리소스에서 백엔드 집합을 누릅니다.
-
그런 다음 백엔드 집합 테이블에 표시된 이름을 누릅니다(예: ocne-lb-backend-set).
-
백엔드를 눌러 노드를 표시합니다.
이 페이지의 상태가 자동으로 갱신됩니다. 일반적으로 표시된 상태가 변경되는 데 2-3분 정도 걸립니다.
-
Overall Health는 다시 시작된 노드가 감지될 때까지 Warning 상태를 표시합니다.
-
감지되면 Overall Health가 OK로 보고합니다.
이 단계에서 제어 노드는 클러스터에 다시 조인되었으며 세 개의 제어 플레인 노드 모두 클러스터에 수신 트래픽을 할당하는 라운드 로빈에 참여하고 있습니다.
제어 플레인 노드 상태 가져오기
-
(sysop01에서)
kubectl
가 응답하는지 확인하고 다시 시작된 제어 플레인 노드의 상태가Ready
(사용 가능)인지 보고합니다.kubectl get nodes
예제 출력:
[oracle@sysop01 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 Ready control-plane,master 26m v1.23.7+1.el8 ocne-control02 Ready control-plane,master 25m v1.23.7+1.el8 ocne-control03 Ready control-plane,master 24m v1.23.7+1.el8 ocne-worker01 Ready <none> 24m v1.23.7+1.el8 ocne-worker02 Ready <none> 26m v1.23.7+1.el8 [oracle@sysop01 ~]$
*참고: 상태 변경은 업데이트된 상태가 표시되기까지 2-3분이 걸릴 수 있습니다. 상태가 변경될 때까지 주기적으로
kubectl get nodes
명령을 반복하십시오.로드 밸런서가 올바르게 구성되었으며 요청을 성공적으로 수락하고 있음을 확인합니다.
추가 정보
- Oracle Cloud Native Environment 문서
- Oracle Cloud Native Environment 교육
- Oracle Linux 학습 구독
- Oracle Linux 커리큘럼
추가 학습 자원
docs.oracle.com/learn의 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 접근할 수 있습니다. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer로 전환할 수 있습니다.
제품 설명서는 Oracle Help Center를 참조하십시오.
Deploy an External Load Balancer with Oracle Cloud Native Environment
F61283-03
September 2022
Copyright © 2022, Oracle and/or its affiliates.