fullmoon's bright IT blog

[PKOS] AWS kOps 설치 및 기본 사용 본문

Cloud/k8s

[PKOS] AWS kOps 설치 및 기본 사용

휘영청 2023. 3. 11. 22:48
728x90

안녕하세요 가시다님의 스터디를 또 시작한 고인물 휘영청입니다 :)

요새 최근에 쿠버네티스 실무에 들어가게되었는데 갈수록어렵습니다

역시 이럴때는 가시다님의 스터디!


kOps 란?

kOps - Kubernetes Operations 

Kubernetes 클러스터를 구성하는 방법 중에서 클라우드 환경에서 사용하는 kOps 입니다.

Kubernetes 생성 및 관리를 쉽게 하도록 도와주는 오픈소스 툴이며 Kubernetes 클러스터를 간단한 CLI 명령을 통해 생성, 관리, 업그레이드, 삭제할 수 있도록 지원합니다.

https://kops.sigs.k8s.io/

 

Welcome - kOps - Kubernetes Operations

For a better viewing experience please check out our live documentation site at kops.sigs.k8s.io. kOps - Kubernetes Operations The easiest way to get a production grade Kubernetes cluster up and running. What is kOps? We like to think of it as kubectl for

kops.sigs.k8s.io

가시다님 스터디로 또 알게되는 AWS kOps !

[기능]

- Automates the provisioning of Highly Available Kubernetes clusters
- Built on a state-sync model for dry-runs and automatic idempotency
- Ability to generate Terraform
- Supports zero-config managed kubernetes add-ons
- Command line autocompletion
- YAML Manifest Based API Configuration
- Templating and dry-run modes for creating Manifests
- Choose from most popular CNI Networking providers out-of-the-box
- Multi-architecture ready with ARM64 support
- Capability to add containers, as hooks, and files to nodes via a cluster manifest

설치가이드 : AWS

다양한 시나리오가 있어서 필요하신 부분을 사용하셔도 됩니다.

https://kops.sigs.k8s.io/getting_started/aws/

 

Deploying to AWS - kOps - Kubernetes Operations

Getting Started with kOps on AWS Make sure you have installed kOps and installed kubectl. Setup your environment AWS In order to correctly prepare your AWS account for kops, we require you to install the AWS CLI tools, and have API credentials for an accou

kops.sigs.k8s.io

 

사전 준비 : kOps와 kubectl이 설치되어 있는지 확인하기.

저는 가시다님이 주신 Cloudformation 스택으로 배포합니다.

[실습구성도]

  • k8s 를 배포할 수 있는 kops 가 설치된 ec2cloudformation 에 의해서 생성됨
  • kopsk8s 클러스터를 생성 : k8s 설정 파일을 s3 에 저장
  • 버전 : k8s v1.24.10, OS Ubuntu 20.04 LTS
  • kops-ec2 역할 : kOps 배포 수행, kubectl 명령 실행 등
  • 마스터 노드와 워커 노드는 EC2 Auto Scaling Group(=ASG) 설정으로 구성됨

 

자동으로 kOps 설치된 kops-ec2를 생성이 되니 만들어질 때까지 대기!

파라미터 값 설정
KeyName - EC2 key pair 
SgingressSshCidr - 인스턴스랑 통신하는데 사용하는 Ip주소 범위

 

배포를 기다린 후에  확인을 해봐야겠죠?

kOps-ec2 에 SSH 로그인 후 실행합니다 :)

 

1) 자격구성하기

[root@kops-ec2 ~]# aws ec2 describe-instances
Unable to locate credentials. You can configure credentials by running "aws configure".

# IAM User 자격 구성 : 실습 편리를 위해 administrator 권한을 가진 IAM User 의 자격 증명 입력
[root@kops-ec2 ~]# aws configure
AWS Access Key ID [None]: -
AWS Secret Access Key [None]: -
Default region name [None]: ap-northeast-2
Default output format [None]: json

# 자격 구성 적용 확인 : 노드 IP 확인
[root@kops-ec2 ~]# aws ec2 describe-instances

 

2)배포 시 참고할 정보를 환경 변수에 저장

편하게 저장해놓는게 굿!

# 배포 시 참고할 정보를 환경 변수에 저장
## export NAME=<자신의 퍼블릭 호스팅 메인 주소>
## export KOPS_STATE_STORE=s3://(위에서 생성한 자신의 버킷 이름)

export AWS_PAGER=""
export REGION=ap-northeast-2
export KOPS_CLUSTER_NAME=fullmoon.r-e.kr
export KOPS_STATE_STORE=s3://fullmoon-k8s-s3
echo 'export AWS_PAGER=""' >>~/.bashrc
echo 'export REGION=ap-northeast-2' >>~/.bashrc
echo 'export KOPS_CLUSTER_NAME=fullmoon.r-e.kr' >>~/.bashrc
echo 'export KOPS_STATE_STORE=s3://fullmoon-k8s-s3' >>~/.bashrc

 

3) kOps를 통해서 k8s를 생성 , 후 k8s 생성을 모니터링

# 옵션 [터미널1] EC2 생성 모니터링
while true; do **aws ec2 describe-instances** --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output text ; echo "------------------------------" ; sleep 1; done

 

4)k8s 클러스터 배포

kops create cluster --zones="$REGION"a,"$REGION"c --networking amazonvpc --cloud aws \
--master-size t3.medium --node-size t3.medium --node-count=2 --network-cidr 172.30.0.0/16 \
--ssh-public-key ~/.ssh/id_rsa.pub --name=$KOPS_CLUSTER_NAME --kubernetes-version "1.24.10" -y

 

5) 생성된 kOps 인스턴스 생성 확인 및 kubernets node 생성 확인

728x90