Kubernetes(1)에서 AWS로의 클러스터 구축 학습

13597 단어 kubernetesDockerAWS

개요


Kubernetes를 배우기 위해서는 먼저 실제 환경을 원하기 때문에 AWS EC2에서 Kubernetes의 집단을 구축해 보았습니다.이번에 작업용 EC2 실례를 만들어 그곳에서 Kubernetes의 설정 스크립트를 실행하고 집단을 구축했다.

작업 인스턴스 만들기


Kubernetes 클러스터 구축을 위한 작업 인스턴스를 만듭니다.

IAM Role 만들기


작업 인스턴스에 할당할 역할을 작성합니다.Kubernetes의 스크립트 설정는 EC2 인스턴스, VPC, S3 배럴 등을 자동으로 생성하기 위해 Role을 사전 할당해야 합니다.
번거롭다면 완전한 접근권을 가진 Role을 만들면 되지만 EC2, S3, IAM에 대한 최소한의 접근권을 가진 Role만 만들면 된다.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "ec2:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "elasticloadbalancing:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "autoscaling:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:*",
      "Resource": "*"
    }
  ]
}

작업 인스턴스 만들기


EC2 인스턴스를 생성합니다.생성할 때 위의 단계에 따라 생성된 회전을 IAM 회전으로 지정합니다.

시작 후 작업용 인스턴스를 SSH로 연결합니다.

클러스터 설정


환경 변수 설정


기본적으로 작업용 실례에서 실행https://get.k8s.io하는 설정 스크립트일 뿐이지만 이 스크립트를 위해 다양한 자원을 만들기 위해 AZ명과 S3의 통 이름 등을 환경 변수를 통해 설정한다.
# クラウドプロバイダー名の指定(aws)。 このスクリプトは、AWS だけでなく、
# Google Cloud Engine(gce) や Microsoft Azure(azure)にも対応しているため、
# この変数の指定は必要。
export KUBERNETES_PROVIDER=aws  

# 使用するAZの名前。デフォルトは us-west-2a になっているため、必要に応じて変更。
# なお、使用するリージョンは、このAZ名から判断される。
export KUBE_AWS_ZONE=ap-northeast-1a

# Master と Minon のインスタンスサイズ。デフォルトで t2.micro にはなっているが
# 念のため設定。
export MASTER_SIZE=t2.micro
export MINION_SIZE=t2.micro

# Minion の台数(作成するインスタンス数)。デフォルトで4台なので、2台にしておいた。
export NUM_MINIONS=2

# S3 のバケット名。すでに存在しればそれが使われ、存在しなければ作成される。
# なお、この環境変数を指定しなくても、名前を自動生成してバットを作成してくれる。
export AWS_S3_BUCKET=arturias-kube

# S3 のリージョン。バケットをスクリプトに生成させる場合に指定する。
export AWS_S3_REGION=ap-northeast-1
기본적으로 Master와 Minion은 ubuntu의 AMI를 사용하여 구축됩니다.AWS_IMAGE라는 환경 변수에 사용할 AMI를 지정할 수 있지만, 현재 설정 스크립트는 ubuntu와 CoreOS만 지원하는 것 같아서 그 외에는 동작하지 않을 수 있습니다.

클러스터 구축


환경 변수를 설정한 후 Kubernets 설정 스크립트를 실행합니다.
curl -sS https://get.k8s.io | bash
이후 자동으로 전진하여 집단을 구축한다.마스터, Minon의 주소, 사용자 이름, 암호가 기재된 파일 등의 정보를 출력합니다.
$ curl -sS https://get.k8s.io | bash
Downloading kubernetes release v0.19.3 to /home/ec2-user/kubernetes.tar.gz

・・・()

Kubernetes cluster is running.  The master is running at:

  https://52.68.83.XX

The user name and password to use is located in /home/ec2-user/.kube/config.

... calling validate-cluster
Found 2 nodes.
        NAME                                             LABELS                                                                  STATUS
     1  ip-172-20-0-10.ap-northeast-1.compute.internal   kubernetes.io/hostname=ip-172-20-0-10.ap-northeast-1.compute.internal   Ready
     2  ip-172-20-0-11.ap-northeast-1.compute.internal   kubernetes.io/hostname=ip-172-20-0-11.ap-northeast-1.compute.internal   Ready

・・・()

Done, listing cluster services:

Kubernetes master is running at https://52.68.83.XX
Elasticsearch is running at https://52.68.83.XX/api/v1beta3/proxy/namespaces/default/services/elasticsearch-logging
Kibana is running at https://52.68.83.XX/api/v1beta3/proxy/namespaces/default/services/kibana-logging
KubeDNS is running at https://52.68.83.XX/api/v1beta3/proxy/namespaces/default/services/kube-dns
Grafana is running at https://52.68.83.XX/api/v1beta3/proxy/namespaces/default/services/monitoring-grafana
 is running at https://52.68.83.XX/api/v1beta3/proxy/namespaces/default/services/monitoring-heapster
influxGrafana is running at https://52.68.83.XX/api/v1beta3/proxy/namespaces/default/services/monitoring-influxdb

Kubernetes binaries at /home/ec2-user/kubernetes/kubernetes/cluster/
You may want to add this directory to your PATH in $HOME/.profile
Installation successful!
AWS 콘솔에서 볼 수 있듯이 다음과 같이 EC2 인스턴스(kubernetes-*를 자동으로 생성하는 인스턴스)가 만들어졌습니다.스크립트를 설정하여 EC2에 대한 AutoScaling Group을 만들고 그 기능을 통해 이러한 인스턴스를 만듭니다.

또한 스크립트를 설정하여 VPC, S3 배럴 및 IAM Role을 생성합니다.

동작 확인


작업에서 마스터의 주소를 실례로 접근해 보세요.사용자 이름과 비밀번호는 작업용 실례의 ~/입니다.kube/config에 적혀 있습니다.
$ curl -u admin:XXXXXXX -k https://52.68.83.XX
{
  "paths": [
    "/api",
    "/api/v1",
    "/api/v1beta3",
    "/healthz",
    "/healthz/ping",
    "/logs/",
    "/metrics",
    "/static/",
    "/swagger-ui/",
    "/swaggerapi/",
    "/ui/",
    "/version"
  ]
}

$ curl -u admin:XXXXXXX -k https://52.68.83.XX/version
{
  "major": "0",
  "minor": "19",
  "gitVersion": "v0.19.3",
  "gitCommit": "3103c8ca0f24514bc39b6e2b7d909bbf46af8d11",
  "gitTreeState": "clean"
}
Pod을 표시합니다.Kubernetes 집단을 관리하는 도구로 사용되는kubectl은 설정을 실행하는 디렉터리에 있는kubernetes/platforms/산하에 있습니다.
$ ./kubernetes/platforms/linux/amd64/kubectl get pods
NAME                                                                   READY     REASON    RESTARTS   AGE
elasticsearch-logging-v1-atfii                                         1/1       Running   0          35m
elasticsearch-logging-v1-f3rge                                         1/1       Running   0          35m
fluentd-elasticsearch-ip-172-20-0-10.ap-northeast-1.compute.internal   1/1       Running   0          31m
fluentd-elasticsearch-ip-172-20-0-11.ap-northeast-1.compute.internal   1/1       Running   0          31m
kibana-logging-v1-4ije5                                                1/1       Running   0          35m
kube-apiserver-ip-172-20-0-9                                           0/1       Pending   0          11m
kube-controller-manager-ip-172-20-0-9                                  0/1       Pending   0          11m
kube-dns-v3-7rw1g                                                      3/3       Running   1          35m
kube-scheduler-ip-172-20-0-9                                           0/1       Pending   0          11m
monitoring-heapster-v3-uz6oy                                           1/1       Running   1          35m
monitoring-influx-grafana-v1-7agvr                                     2/2       Running   0          35m

클러스터 제거


스크립트를 설정하여 AWS의 AutoScaling Group과 VPC 등 다양한 자원을 만들었기 때문에 집단과 각종 자원을 수동으로 삭제하는 것은 번거롭다.작업용 실례에서 다운로드한 Kubernetes 패키지에 포함된cluster/kube-down입니다.sh를 사용하는 것은 매우 간단하다.
$ export KUBERNETES_PROVIDER=aws
$ export KUBE_AWS_ZONE=ap-northeast-1a
$ kubernetes/cluster/kube-down.sh
Bringing down cluster using provider: aws
Deleting auto-scaling group: kubernetes-minion-group
Deleting auto-scaling launch configuration: kubernetes-minion-group
Deleting instances in VPC: vpc-97e249f2
(中略)
Deleting security group: sg-f1700f94
Deleting security group: sg-f2700f97
Done

웹 페이지 정보


Getting started on AWS EC2

기록 수정


2015/8/11 "집단 삭제"추적

좋은 웹페이지 즐겨찾기