kOps - Kubernetes Bootstrapping Tool

레거시 환경에서는 Kubernetes를 Bootstrap(구축)시 kubeadm이 주로 사용되고, Cloud 환경에서는 ‘kOps’ 나 ‘kubespray’와 같은 툴들을 사용하여 Kubernestes 환경을 편리하게 구축/관리하게 된다. 그중 kops를 정리한다.

kOps

CKA

‘kops’는 kubernetes operation의 약자로 Cloud 환경에 Production-grade의 K8S Cluster를 쉽게 생성/삭제/업그레이드/관리해주는 오픈소스 프로젝트이다. Cluster를 위한 kubectl을 표방하여 kops가 제공하는 Command Line Tool을 사용해 kubernetes cluster를 관리할 수 있다.

Features

  • 완전 자동화된 설치 : 자동으로 Kubernetes를 설치해 준다.
  • Self Healing : 자원들을 Auto-Scaling Group을 통해 관리하여 자체 복구가 가능하다.
  • 다양한 OS 지원 : Debian, Ubuntu, CentOS, RHEL, Amazon Linux, CoreOS 등을 지원한다.
  • HA 지원 : HA 구성으로 kubernetes 환경을 구출 할 수 있다.
  • Upgrade 지원 : Kubernetes 업그레이드가 가능하다.
  • Terraform 지원 : Terraform 매니페스트를 생성 할 수 있다.

Cloud Support

2021년 3월 현재 클라우드들에 대한 지원 현황은 아래와 같다.

  • 공식 지원 : AWS
  • Beta Support : DigitalOcean, GCE, and OpenStack
  • Alpha Support : Azure
  • 참고
    • AliCloud in deprecated
    • vSphere removed

Commands

kops create

cluster를 등록한다.

  • spec file로 부터 cluster를 등록 Command:
kops create -f <cluster spec>
  • cluster를 등록 Command:
kops create cluster <cluster name>

kops update

cloud resource들을 실제로 생성하거나 업데이트한다.

  • Command:
kops update cluster <cluster name>

kops rolling-update

kubernetes cluster를 업데이트한다.

  • Command:
kops rolling-update cluster <cluster name>

kops get

cluster들의 정보를 조회한다.

  • Command:
kops get clusters # list
kops get <cluster name> # for a cluster

kops delete

cluster를 등록한다.

  • Command:
kops delete cluster --name
kops delete -f <manifest file>

kops version

kops version을 확인한다.

  • Command:
kops version

AWS Usage

AWS Cloud 환경에 kops을 사용해 kubernetes cluster를 구축하는 과정은 다음과 같다.

Step1 - AWS IAM 키 생성, 구성, 권한 부여

  • IAM 필요 권한:
    • AmazonEC2FullAccess
    • AmazonRoute53FullAccess
    • AmazonS3FullAccess
    • IAMFullAccess
    • AmazonVPCFullAccess

Step 2 - kops 작업 환경 준비

kops 작업을 위해 Local Host를 사용할 수 있지만 관리적 편의성을 위해 EC2 Instance가 주로 사용된다.

  • 필요 작업: kubectl, aws-cli 설치

Step 3 - kops 설치

실행파일을 다운로드 하거나 소스코드로 부터 빌드한다.

Step 4 - DNS 설정

kops는 클러스터 내부와 외부 모두에서 검색을 위해 DNS를 사용한다. DNS를 통해 Kubernetes API 서버에 연결한다.

Step 5 - Create S3 Bucket

kops가 설치 이후에 클러스터를 관리하기 위해 사용자가 생성한 클러스터의 상태나 사용하는 키 정보들을 지속적으로 추적한다. 이러한 정보들을 S3에 저장하여 사용한다.

Step 6 - Cluster Setting

kops create cluster 혹은 kops edit cluster 를 실행하여 클러스터 설정을 생성/구성한다.

Step 7 - Create Cluster

kops update cluster 를 실행하여 클러스터 설정으로 부터 환경을 구성한다.

최종적으로 생성 된 자원 예시

  • EC2 Instances
  • Load Balancer
  • VPC
  • Subnet
  • 보안 그룹

Source

Leave a comment