간단히 말해서, kops는 쿠버네티스(k8s) 클러스터를 위한 kubectl입니다. 쿠버네티스의 강점은 공급업체 종속성을 제거하고, 다른 클라우드 공급업체로 전환해야 하거나 클라우드 워크플로우를 온프레미스로 전환해야 하는 경우 앱, 데이터베이스에 대한 이식성을 제공한다는 점입니다. 시나리오가 무엇이든, 쿠버네티스는 그러한 자유를 제공합니다.

KOPS Architecture

KOPS 아키텍처

완전한 공개라는 정신에 따라 클라우드 공급업체에서 제공하는 도구를 사용하는 것이 더 쉽습니다. kops와 같은 오픈소스 도구는 똑같이 잘 작동하고 매우 효율적입니다.

카우치베이스 자율 운영자는 사용자 정의 리소스 정의(CRD)를 생성하고 카우치베이스 클러스터를 관리하기 위해 카우치베이스 전용 컨트롤러(자율 운영자)를 등록하여 쿠버네티스 API를 확장한다.

이 블로그에서는 AWS를 IaaS로 사용하며, kops 사용법과 기능, 그리고 Couchbase 클러스터를 대규모로 실행하는 Couchbase Autonomous Operator를 시연할 예정입니다.

KOPS는 무엇을 할 수 있나요?

"kops는 명령줄에서 고가용성의 프로덕션급 Kubernetes 클러스터를 생성, 파괴, 업그레이드 및 유지 관리할 수 있도록 도와줍니다. 현재 AWS(Amazon Web Services)가 공식 지원되며, GCE는 베타 지원, VMware vSphere는 알파 지원, 그리고 다른 플랫폼도 지원될 예정입니다." [1]

본론으로 들어가서 어떻게 작동하는지 살펴볼까요?

  • kops 설치
  • AWS에서 k8s 클러스터 생성
  • k8s 대시보드 구성
  • K8S 클러스터 확인 및 검증
  • K8에 카우치베이스 자율 운영자 배포하기
  • 카우치베이스 클러스터 배포
  • 서비스 복원력
  • 다음 단계

KOPS 설치

홈브루에서 OSX

Linux

 

AWS에서 k8s 클러스터 생성

kops를 사용하여 k8s 클러스터를 생성하려면 먼저 kops에 대한 IAM 정책을 생성하고 kops가 k8s 클러스터를 생성하는 데 필요한 리소스를 프로비저닝할 수 있도록 해야 합니다. 이 작업은 한 번만 수행하면 됩니다.

kops의 전제 조건

AWS CLI 설치

MacOS의 경우

$ pip3 설치 awscli -업그레이드 --사용자

다른 플랫폼의 경우, 여기를 클릭하세요

참고: 일회성 작전만 가능

'aws configure'를 실행하여 AWS 환경을 활성화하고 아래 명령을 실행합니다.

kops 구성/데이터를 저장할 S3 버킷 만들기

제 경우에는 다음과 같이 명명했습니다. RD-K8S-AWS 그리고 지역 us-west-1

kops 상태 저장소 및 클러스터 이름에 대한 환경 변수를 정의합니다.

클러스터의 클러스터 이름을 선택합니다. rdc.k8s.local

kops로 k8s 클러스터 생성

k8s 클러스터의 AWS 지역, 인스턴스 크기 및 노드 수를 선택합니다.

참고: 약 5~8분 정도 소요되며 커피를 마시기 좋은 시간입니다!

샘플 출력은 다음과 같습니다.

노드 가져오기 및 k8s 클러스터 검증하기

이 시점에서 kubectl 컨텍스트 또는 k8s 컨텍스트는 AWS k8s 클러스터를 가리켜야 한다.

k8s 대시보드 구성

다른 탭/단말에서 아래 명령을 실행하여 로컬 노트북에 k8s API 서버를 프록시합니다.

토큰을 받아 k8s 대시보드에 액세스하세요.

토큰 사용 옵션을 선택하고 위에서 토큰을 가져오는 동안 다음을 건너뜁니다. % 결국에는

http://127.0.0.1:8001/ui [2]에서 K8S 대시보드에 로그인합니다.

K8S 클러스터 확인 및 검증

다음 명령을 사용하여 k8s 클러스터를 검증합니다.

# 클러스터 생성에 언급된 노드 수가 여기에 일치하는지 확인합니다.

K8에 카우치베이스 자율 운영자 배포하기

이제 k8s 클러스터를 배포했으니 이제 카우치베이스 운영자를 배포할 차례입니다.

먼저 운영자를 배포하고, 운영자에 대해 RBAC을 활성화하고, Couchbase 운영자에 대한 ClusterRole을 생성해야 합니다.

참고: 이 역할은 한 번만 생성하면 됩니다.

클러스터롤이 생성된 후, 카우치베이스 오퍼레이터를 설치하는 네임스페이스에 서비스 어카운트를 생성한 다음, 해당 서비스 어카운트에 클러스터 역할 바인딩. 이 가이드에서는 기본값 네임스페이스에 서비스 계정을 생성합니다.

카우치베이스 운영자 배포

이 명령을 실행하면 Couchbase Operator 도커 이미지가 다운로드됩니다. operator.yaml 파일을 생성하고 배포 는 카우치베이스 오퍼레이터의 단일 인스턴스를 관리합니다. 카우치베이스 오퍼레이터는 배포를 사용하므로 실행 중인 파드가 죽으면 다시 시작할 수 있습니다.

다음 출력과 비슷한 결과가 나올 때까지 오퍼레이터의 상태를 계속 폴링해야 합니다:

카우치베이스 운영자가 실행되면 다음과 같이 표시됩니다.

카우치베이스 서버 GUI 인증을 위한 시크릿을 배포해야 합니다.

지금 10노드 Couchbase 클러스터 배포하기

카우치베이스 포드 목록 가져오기

카우치베이스 GUI에 액세스하려면 포트 8091로 접속해야 하며, 이를 위해 다음과 같이 포트 포워딩을 수행할 수 있습니다.

카우치베이스 서버 GUI는 http://localhost:8091 에서 액세스할 수 있습니다.

서비스 복원력

서비스 복원력을 보여주기 위해, 카우치베이스 노드 손실을 시뮬레이션하여 파드를 죽일 수 있습니다.

쿠버네티스가 제공하는 가장 큰 기능은 서비스 복원력입니다. 파드가 손실되면 쿠버네티스는 클러스터 정의를 확인하여 3개의 파드가 필요하다는 것을 파악하고 새 파드를 스핀업하여 클러스터에 추가한 다음 클러스터에서 리밸런싱을 수행합니다. 따라서 클러스터에서 노드 장애를 모니터링하고, 장애 발생 시 수행할 작업을 결정한 다음 리밸런싱 작업을 수행하는 중요한 관리 작업이 필요하지 않습니다. 이 모든 작업이 보이지 않는 곳에서 이루어지므로 애플리케이션은 중단 없이 작동합니다.

파드를 다시 나열하면 다음과 같은 내용이 표시되어야 합니다.

로드 KV 부하를 생성하기 위해 cbc-pillowfight를 설치하면 이 클러스터에서 밀어붙일 수 있는 한계가 무엇인지 알 수 있습니다.

단일 앱 서버에서 다음 파라미터로 필로우파이트 실행하기

KV performance with pillowfight

베개 싸움을 통한 KV 성능

단일 앱 서버에서 초당 최대 34,000건의 작업을 처리할 수 있습니다.

다른 앱 서버를 사용하여 필로우파이트 실행을 한 단계 더 높이면, 초당 약 51,000개의 작업을 처리할 수 있는 성능을 얻을 수 있습니다.

KV performance with pillowfight

베개 싸움을 통한 KV 성능

결론

여기서 배운 것은 kops를 사용하면 Couchbase 클러스터를 대규모로 배포하는 것이 매우 쉬워지고 Autonomous 운영자는 서비스 복원력, 자동 재조정, 자동 버킷 생성, CI/CD 파이프라인과의 쉬운 통합과 같은 이점을 제공합니다. 개발/QA/UAT 및 프로덕션에 yaml 파일을 표준화할 수 있습니다.

참조:

[1] https://github.com/kubernetes/kops

[2] K8S 대시보드 문제 해결

 

작성자

게시자 램 다크네

Ram Dhakne은 Couchbase의 미국 서부 솔루션 컨설턴트입니다. 그는 현재 엔터프라이즈 고객의 디지털 혁신 여정을 돕고 NoSQL 기술 도입을 지원하고 있습니다. 현재 그의 관심 분야는 AKS, GKE, ACS 및 OpenShift에서 실행되는 Kubernetes 클러스터에서 Couchbase NoSQL 서버와 같은 영구 애플리케이션을 실행하여 Kubernetes에서 엔드투엔드 보안을 유지하는 것입니다. 과거에는 IaaS 플랫폼(AWS, GCP, Azure 및 프라이빗 클라우드), 엔터프라이즈 백업 대상 제품 및 백업 애플리케이션에 대해 작업했습니다.

댓글 남기기