웹사이트 검색

Kops를 사용하여 AWS에서 Kubernetes 클러스터를 설정하는 방법


Kops는 가장 쉬운 방법으로 Kubernetes 클러스터를 불러오는 데 사용됩니다. Kubernetes 클러스터를 생성하는 데 사용되는 명령줄 도구입니다. Kops는 GCP, DigitalOcean, OpenStack이 베타 버전인 AWS를 공식적으로 지원합니다. Kops는 필요한 클러스터 구성에 대한 Terraform 파일도 생성할 수 있습니다. Kops를 사용하여 클러스터를 쉽게 생성할 수 있을 뿐만 아니라 클러스터에서 Kubernetes 버전을 수정, 삭제 및 업그레이드할 수 있습니다.

이 기사에서는 AWS에서 1개의 마스터 노드와 1개의 작업자 노드로 Kubernetes 클러스터를 생성하는 단계를 볼 것입니다. 진행하기 전에 이미 Kubernetes에 익숙하다고 가정합니다.

전제 조건

  1. AWS 계정(없으면 생성).
  2. EC2 Ubuntu 18.04 인스턴스(AWS에서 EC2 인스턴스를 만드는 방법을 알아보려면 여기를 클릭).
  3. S3 버킷(AWS에서 S3 버킷을 만드는 방법을 알아보려면 여기를 클릭).
  4. 도메인 이름(AWS에서 도메인을 생성하는 단계를 이해하려면 \AWS에서 도메인 이름을 구입하는 방법\을 검색하십시오.)
  5. 충분한 관리자 권한이 있는 IAM 역할(AWS에서 IAM 역할을 생성하는 방법을 알아보려면 여기를 클릭).

우리는 무엇을 할 것인가?

  1. AWS에 로그인합니다.
  2. S3 버킷, IAM 역할을 확인합니다.
  3. IAM 역할을 인스턴스에 연결합니다.
  4. EC2 인스턴스에 Kubectl 및 Kops를 설치합니다.
  5. 레코드세트 규칙 및 호스팅 영역을 확인합니다.
  6. Kops를 사용하여 Kubernetes 클러스터를 만듭니다.
  7. 클러스터를 삭제합니다.

AWS에 로그인

계정에 로그인하기 위해 사용자 인증 정보를 입력할 수 있는 로그인 페이지로 이동하려면 여기를 클릭하세요.

AWS 계정에 성공적으로 로그인하면 다음과 같이 기본 AWS Management Console이 표시됩니다.

S3 버킷, IAM 역할 확인

Kops를 사용하여 클러스터를 생성하려면 Kops가 모든 클러스터 구성을 저장할 S3 버킷이 필요합니다.

Kops 구성을 저장하는 데 사용할 버킷을 확인하십시오.

사용하려는 IAM 역할에 충분한/관리자 권한이 있는지 확인하십시오. Kops는 관리자 권한이 필요하지 않습니다. AWS IAM 및 권한에 대해 잘 모르고 액세스 문제에 빠지고 싶지 않은 경우 관리자 권한을 사용할 수 있습니다.

IAM 역할을 인스턴스에 연결

역할이 있으면 kops 명령을 실행하는 데 사용할 EC2 인스턴스에 역할을 연결합니다. EC2로 이동 --> EC2 인스턴스 선택 --> 작업 --> 보안 --> IAM 역할 수정을 클릭합니다.

IAM 역할을 선택하고 변경 사항을 저장합니다.

EC2 인스턴스에 Kubectl 및 Kops 설치

지금까지 필요한 역할이 연결된 S3 버킷과 EC2 인스턴스가 있습니다. 이제 Kops를 사용하여 클러스터를 생성하는 데 사용할 EC2 인스턴스에 로그인합니다.

다음 단계는 EC2 인스턴스에 Kubectl을 설치하는 것입니다.

다음 명령을 실행하여 Ubuntu 서버에 kubectl을 설치합니다.

curl -LO "https://dl.k8s.io/release/$(curl -L -s 

curl -LO "https://dl.k8s.io/$(curl -L -s 

echo "$(<kubectl.sha256) kubectl" | sha256sum --check

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

mkdir -p ~/.local/bin/kubectl

mv ./kubectl ~/.local/bin/kubectl

다음 명령을 사용하여 kubectl 버전을 확인합니다.

kubectl version --client

이제 동일한 EC2 인스턴스에 Kops를 설치할 준비가 되었습니다.

kops가 있는지 확인하고 없으면 Ubuntu Server에서 다음 명령을 사용하여 설치합니다.

kops

curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64

chmod +x kops-linux-amd64

sudo mv kops-linux-amd64 /usr/local/bin/kops

이제 서버에 kops가 있어야 합니다.

kops

레코드세트 규칙 및 호스팅 영역을 확인합니다.

Kops는 클러스터를 구축하는 데 필요한 DNS 레코드가 필요합니다.

여기 route53에 두 번째 호스팅 영역이 있습니다.

또한 내 SUBDOMAIN의 NS 서버를 Route53의 PARENT 도메인에 복사했습니다.

Route53으로 이동 -- > 호스팅 영역 -- > 기본 기본 호스팅 영역으로 이동-- > 레코드세트를 확인하고 해당 값을 확인합니다.

Kops를 사용하여 Kubernetes 클러스터 생성

이제 클러스터를 만들 준비가 모두 끝났습니다. 클러스터를 만들기 전에 클러스터를 나열하려고 할 때 무엇을 얻게 되는지 살펴보겠습니다.

kops get clusters

위의 명령은 파라미터로 S3 버킷이 필요하므로 실패합니다.

kops get clusters --state s3://kops.devopslee.com

기존 클러스터가 없기 때문에 이 명령어는 아무 것도 나열하지 않습니다.

s3 버킷 이름을 명령의 매개변수로 지정하지 않으려면 터미널의 값을 \KOPS_STATE_STORE\ 변수로 내보낼 수 있습니다.

export KOPS_STATE_STORE=s3://kops.devopslee.com

이번에는 명령어에 S3 버킷을 지정할 필요가 없습니다.

kops get clusters

이제 다음을 사용하여 클러스터를 생성해 보겠습니다.

  1. t2.medium 유형의 인스턴스가 있는 마스터 노드 1개
  2. t2.micro 유형의 인스턴스가 있는 작업자 노드 1개
  3. us-east-1a,us-east-1b,us-east-1c와 같은 가용성 영역

kops create cluster --name kops.devopslee.com --state s3://kops.devopslee.com --cloud aws --master-size t2.medium --master-count 1 --master-zones us-east-1a --node-size t2.micro --node-count 1 --zones us-east-1a,us-east-1b,us-east-1c

위의 명령은 ssh 키를 지정하지 않았기 때문에 오류가 발생합니다.

인스턴스에 키 쌍이 있는지 확인하십시오.

ls -l ~/.ssh/

키 쌍이 없으면 다음 명령을 사용하여 만들 수 있습니다.

ssh-keygen

이번에는 create 명령어를 다시 실행하면 ssh 키가 없어 실패하더라도 클러스터 구성으로 이전 명령어로 S3를 업데이트했기 때문에 실패합니다.

kops create cluster --name kops.devopslee.com --state s3://kops.devopslee.com --cloud aws --master-size t2.medium --master-count 1 --master-zones us-east-1a --node-size t2.micro --node-count 1 --zones us-east-1a,us-east-1b,us-east-1c  --ssh-public-key ~/.ssh/id_rsa.pub

따라서 클러스터 구성을 삭제하고 ssh 키로 클러스터를 다시 생성해 보겠습니다.

kops delete cluster --name kops.devopslee.com --state s3://kops.devopslee.com --yes

이번에는 클러스터를 생성하는 동안 ssh 공개 키를 전달합니다.

kops create cluster --name kops.devopslee.com --state s3://kops.devopslee.com --cloud aws --master-size t2.medium --master-count 1 --master-zones us-east-1a --node-size t2.micro --node-count 1 --zones us-east-1a,us-east-1b,us-east-1c  --ssh-public-key ~/.ssh/id_rsa.pub

먼저 클러스터 구성이 생성됩니다.

이제 클러스터 구성이 있습니다. 구성을 변경하려는 경우 수행할 수 있고 그렇지 않으면 클러스터 생성을 진행할 수 있습니다. S3 버킷으로 이동하여 클러스터 구성을 볼 수 있습니다.

이번에는 클러스터를 사용할 수 있는지 확인하게 됩니다.

kops get cluster

그러나 리소스는 아직 생성되지 않았습니다.

리소스를 즉시 생성하려면 명령에 대한 옵션으로 --yes를 사용하여 클러스터를 업데이트해야 합니다.

kops update cluster --name kops.devopslee.com --yes

클러스터 생성에는 다소 시간이 걸립니다. 다음 \validate\ 명령을 사용하여 클러스터의 상태를 확인할 수 있습니다.

kops validate cluster --wait 10m

모든 클러스터 리소스가 생성되면 클러스터를 사용할 수 있습니다.

EC2 인스턴스가 준비되면 kops는 마스터의 IP를 포함하는 A 레코드로 호스팅 영역을 업데이트합니다.

이제 클러스터를 사용할 준비가 되었습니다. 기본 네임스페이스의 기존 포드를 확인하려면 다음 명령을 실행합니다.

kubectl  get pods

모든 네임스페이스에서 포드를 확인할 수도 있습니다.

kubectl  get pods -A

클러스터의 노드를 확인하십시오.

kubectl  get nodes

노드의 세부정보를 가져오려면 명령어에서 -o wide를 사용하세요.

kubectl  get nodes -o wide

클러스터 삭제

클러스터가 더 이상 필요하지 않으면 Kops를 사용하여 쉽게 삭제할 수 있습니다.

kops get cluster

단일 명령을 실행하기만 하면 됩니다.

kops delete cluster --name kops.devopslee.com --state s3://kops.devopslee.com --yes

Kops는 클러스터가 완전히 작동하도록 만들기 위해 생성한 모든 리소스를 삭제합니다.

결론

이 기사에서는 Kops를 사용하여 Kubernetes 클러스터를 생성하는 모든 단계를 살펴보았습니다. 우리는 완전한 기능을 갖춘 클러스터를 만들기 위해 Kops에 도메인이 필요하다는 것을 확인했습니다. Kops를 사용하여 클러스터를 생성하고 삭제하는 것이 얼마나 쉬운지 확인했습니다.