3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

kops を使って AWS 上に k8s を構築してみる

Posted at

kops を使って AWS 上に k8s を構築してみる

以下を試した時のメモ。

kopsを使ってKubernetesクラスタをAWS上で構成

環境

  • EC2
  • amzn-ami-2018.03.a-amazon-ecs-optimized(ami-f3f8098c)

Instance profile の作成

  • AmazonEC2FullAccess
  • AmazonRoute53FullAccess
  • AmazonS3FullAccess
  • IAMFullAccess
  • AmazonVPCFullAccess

EC2 の起動

  • 起動するインスタンスには作成した Instance profile を設定
  • kops と kubectl のインストールは UserData でやってしまう

Installing kops (Binaries)

#!/bin/bash
yum update -y
yum install wget -y

# install kubectl
wget -O kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

# install kops
wget -O kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

上は多分動くけど未検証。
というかそもそも AmazonLinux AMI に docker をインストールする方が適切な気がしてきた。。。

SSH鍵の生成

$ssh-keygen
(すべて enter)

AWS CLI のインストール

Linux に AWS Command Line Interface をインストールします

$curl -O https://bootstrap.pypa.io/get-pip.py
$python get-pip.py --user

# PATH の追加
$echo "export PATH=~/.local/bin:$PATH" >> ~/.bashrc

# AWS CLI のインストール
$pip install awscli --upgrade --user

kops用のS3バケットの作成

# バケット名をランダムに生成し、ステートストアとして設定する
$ export S3_BUCKET=example-state-store-$(cat /dev/random | LC_ALL=C tr -dc "[:alpha:]" | tr '[:upper:]' '[:lower:]' | head -c 32)
$ export KOPS_STATE_STORE=s3://${S3_BUCKET}

# AWS CLIを使ってS3バケットを作成する
$ aws s3 mb $KOPS_STATE_STORE
make_bucket: example-state-store-vzupjxxxxxxx

# バージョニングを有効にする
$ aws s3api put-bucket-versioning \
  --bucket $S3_BUCKET \
  --versioning-configuration \
  Status=Enabled

$echo "export KOPS_STATE_STORE=s3://example-state-store-xxxxx" >> ~/.bashrc

クラスターの作成

# 実行したが VPC が足りず途中で失敗。。。
$ kops create cluster \
  --name example.cluster.k8s.local \
  --zones ap-northeast-1a,ap-northeast-1c \
  --yes
  
# 一旦削除
$kops delete cluster \
  example.cluster.k8s.local \
  --yes  

# 再実行。成功
$ kops create cluster \
  --name example.cluster.k8s.local \
  --zones ap-northeast-1a,ap-northeast-1c \
  --yes
  
# すぐに実行するとエラーになるので待つ。コンソールを見るとEC2が起動中だったのでこちらの起動及びマスター、ノードの準備が完了するまで待つ必要があるということのようだ。確認するとマスター1台、ノード2台が起動していた

# 数分待つと ready になる
$kops validate cluster
Using cluster from kubectl context: example.cluster.k8s.local

Validating cluster example.cluster.k8s.local

INSTANCE GROUPS
NAME                    ROLE    MACHINETYPE     MIN     MAX     SUBNETS
master-ap-northeast-1a  Master  m3.medium       1       1       ap-northeast-1a
nodes                   Node    t2.medium       2       2       ap-northeast-1a,ap-northeast-1c

NODE STATUS
NAME                                            ROLE    READY
ip-172-20-32-84.ap-northeast-1.compute.internal node    True
ip-172-20-60-80.ap-northeast-1.compute.internal master  True
ip-172-20-95-44.ap-northeast-1.compute.internal node    True

Your cluster example.cluster.k8s.local is ready

# Ready になっている
$kubectl get node
NAME                                              STATUS    ROLES     AGE       VERSION
ip-172-20-32-84.ap-northeast-1.compute.internal   Ready     node      3m        v1.9.6
ip-172-20-60-80.ap-northeast-1.compute.internal   Ready     master    4m        v1.9.6
ip-172-20-95-44.ap-northeast-1.compute.internal   Ready     node      3m        v1.9.6

とりあえずブログの内容までは出来たのでこれは終了

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?