AWS
docker
kubernetes
rancher
eks

Rancher2.0 v2.0.3でEKSにkubernetesクラスタ構築

AWSのEKS(Amazon Elastic Container Service for Kubernetes)がGAとなり、Rancher2.0 v2.0.2で試したところこちらのissueの内容によりうまくいきませんでした。

v2.0.3で修正されたようなので早速試してみました。

リリースノート


Rancher2.0 v2.0.3環境の構築


EC2の準備

EC2で以下の内容で1インスタンス作成します。

EKSは2018年6月現在ではus-east-1米国東部(バージニア北部)とus-west-2米国西部 (オレゴン)のみ利用可能なので、Rancherサーバもus-west-2米国西部 (オレゴン)に立てることにしました。

もちろんどのリージョンでも問題ありません。

項目
入力概要

リージョン
us-west-2米国西部 (オレゴン)

インスタンスタイプ
t2.medium

ブートディスク
Ubuntu 16.04 LTS


Rancher2.0 v2.0.3のインストール

TeraTermやターミナルを使用して、SSHでログインします。

ちなみに、AWSでUbuntuサーバにログインする際のユーザ名はUbuntuで、

秘密鍵を利用したログインとなります。

秘密鍵はインスタンスを作成する際に新規または既存のものを利用できます。

1.Dockerのインストール

1.12.6, 1.13.1, 17.03.2のいずれかのDockerをインストールします。


コマンド

$ curl https://releases.rancher.com/install-docker/17.03.2.sh | sh


・(省略)

+ sudo -E sh -c docker version
Client:
Version: 17.03.2-ce
API version: 1.27
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:31:19 2017
OS/Arch: linux/amd64

Server:
Version: 17.03.2-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:31:19 2017
OS/Arch: linux/amd64
Experimental: false

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

sudo usermod -aG docker iyutaka2018

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.


2.Rancher2.0 v2.0.0のインストール


コマンド

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Unable to find image 'rancher/rancher:latest' locally
latest: Pulling from rancher/rancher
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3: Pull complete
97f170c87c6f: Pull complete
870d5b269ab8: Pull complete
a19a69d4b1f9: Pull complete
a6dcc0296365: Pull complete
3b0fc6158a0c: Pull complete
4313aa3e477c: Pull complete
Digest: sha256:d7ac3b1213f9388a32d57236ab630b61716c05a068967c35f14d2c1e80d07003
Status: Downloaded newer image for rancher/rancher:latest
ed35766b4e4a245f24fb22675c76766fa3076d57006244077ee2eddf573a30b0

3.ブラウザを起動して、UIにアクセスします。

事前にAWSのセキュリティグループのインバウンドでhttpとhttpsを許可しておきましょう。

https://パブリックIP/

デフォルトユーザであるadminユーザのパスワード設定。

image.png

「Save URL」ボタンを押下します。

image.png

ログイン完了となります。

screencapture-34-209-50-34-g-clusters-2018-06-23-23_11_23.png

上部メニューから「Catalogs」を選択し、「Helm stable」を「Enable」に変更します。

image.png

上部メニューから「Global」を選択します。

image.png


Rancher2.0 v2.0.3からEKSにクラスタ構築

「Add Cluster」ボタンを押下します。

image.png

「In a hosted Kubernetes provide」で「Amazon EKS」を選択します。

「Cluster Name」に任意の名前を入力します。

「Region」で「us-west-2」を選択します。※「us-east-1」と「us-west-2」しか選択できないようになっています。(2018年6月現在)

「Access Key」と「Secret Key」はAWSのIAMで作成したものを入力します。

最後に「Next: Authenticate & configure nodes」ボタンを押下します。

image.png

「Instance Type」で「t2.medium」を選択します。

「Create」ボタンを押下します。

image.png

10分ほどでクラスタが完成します。Activeステータスになったらクラスタ名をクリックします。

image.png

クラスタのリソースを確認できます。

screencapture-34-209-50-34-c-c-jbgg5-2018-06-23-23_50_40.png


kubectlのインストールと設定

Rancherサーバにkubectlコマンドを実行できるようにします。

1.kubectl(linux用)をダウンロード


コマンド

$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 52.5M 100 52.5M 0 0 34.5M 0 0:00:01 0:00:01 --:--:-- 34.5M

2.実行権限の付与


コマンド

$ chmod +x ./kubectl


3.kubectlファイルの移動


コマンド

$ sudo mv ./kubectl /usr/local/bin/kubectl


4.kubectlコマンドの実行


コマンド

$ kubectl version

Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?

5.Kubeconfig Fileの設定

「Kubeconfig File」ボタンを押下します。

image.png

「Copy to Clipboard」をクリックして、「Close」ボタンを押下します。

image.png


コマンド

$ mkdir .kube

$ vim .kube/config
-----------------------------
apiVersion: v1
kind: Config
clusters:
- name: "eks-cluster"
cluster:
server: "https://34.209.50.34/k8s/clusters/c-jbgg5"
api-version: v1
certificate-authority-data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM3akNDQ\
WRhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFvTVJJd0VBWURWUVFLRXdsMGFHVXQKY\
21GdVkyZ3hFakFRQmdOVkJBTVRDV05oZEhSc1pTMWpZVEFlRncweE9EQTJNak14TXpVNE1EbGFGd\
zB5T0RBMgpNakF4TXpVNE1EbGFNQ2d4RWpBUUJnTlZCQW9UQ1hSb1pTMXlZVzVqYURFU01CQUdBM\
VVFQXhNSlkyRjBkR3hsCkxXTmhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ\
0tDQVFFQXBsTStMV1AwUGtsUmxWYUkKc3l0dDVYZXlVOVcrbUpwYXVmMXRab1Jrb1JKdC9vNmpBR\
zhrdGlUYmlPSkh6WDJzTTV0cDkwNWI0NXVRMkJEQgpyc0Z3a0lMbjZnalJZbUtqZ2xnSndGN1VCZ\
kZYdVdjUzlVMFp6a0ZEcGRVNkJ1YmhPYUh0SFNidGFBQm0xZ04vCkRrTHR0c3RNWkRZUGJUUmpGW\
S9rL2owWXZCYitMQzRHcG5LNzNZMkxlWWhjMFA5bmZPRDk0b3daWFNRSDVJZnYKMUhSZnRVdStIQ\
kEwM1lsZVV2UzExZEpUQzdZNGpqdFJtZUNOTzFVU3BzS3JvZ2J4SG5MNTlKcDR4dk5rQU9OdQpzV\
FJJL1pzdlhGaEFDLzkzNDFiYklWU1dTOGJGYnhIckc2bmtvcUlNaVd4bnB4YUdXZTVXYzlBSElvZ\
XpIbFlnCjdsREpJUUlEQVFBQm95TXdJVEFPQmdOVkhROEJBZjhFQkFNQ0FxUXdEd1lEVlIwVEFRS\
C9CQVV3QXdFQi96QU4KQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBTEtOd1E3WjZjcFhhMGxjTGZwQ\
Tg0TDVGMHlOZWk3elBXTnN1bGk2bQpHQWtyZEV0TFJRMzBvUThGRCtOT3V3SUJKK1FhNjdDdHMra\
DhmVSthL0d5VitEQ2ZnTlg0OHdCTS9MaFgvM0hwClhENkxINkxsTFRuMVZPWVZnMmlKSjh0N20ve\
VJ5S2piT1NoTm9vUnUxNnNNNUI3d05aekxwK05KM3lUR2VpQXIKcDVxZk13dVUvTnRGTDQ4QVpUO\
W1uQUhCRHdmYVZ6YTd1L0N2NjkzTWo0VEFqNkxvaGhHaGlRdWdON0REOVlwcQp0azRGYWVaUGFCb\
kV6THJCT2FTbnRzZlprYTFJU2FEUmUxRjM5ZVhQNkY2U3VxYzhYSExTZEdpNlZHNUdMN1lhCnN3V\
2NsSGdSSSt5QSs5SXRIVXV2a0F6R3pXVWswdnRqazRuN3RVZkFpOVJVV1E9PQotLS0tLUVORCBDR\
VJUSUZJQ0FURS0tLS0tCg=="

users:
- name: "user-kbcwm"
user:
token: "kubeconfig-user-kbcwm:5pxd4hmm8mfk54gn7zgvdrvbkxjshfdfm2tsx7zxmlmll59gs6dl88"

contexts:
- name: "eks-cluster"
context:
user: "user-kbcwm"
cluster: "eks-cluster"

current-context: "eks-cluster"
-----------------------------
:wq


6.kubectlコマンドでノードを確認します。


コマンド

$ kubectl get nodes

NAME STATUS ROLES AGE VERSION
ip-192-168-126-237.us-west-2.compute.internal Ready <none> 19m v1.10.3
ip-192-168-179-17.us-west-2.compute.internal Ready <none> 19m v1.10.3
ip-192-168-251-193.us-west-2.compute.internal Ready <none> 19m v1.10.3

7.AWSのダッシュボードからもクラスタが構築できていることを確認します。

image.png


Rancher2.0 v2.0.3からEKSにクラスタを削除

対象のクラスタにチェックを入れて、「Delete」ボタンを押下します。

image.png

「Delete」ボタンを押下します。

screencapture-34-209-50-34-g-clusters-2018-06-24-00_20_48.png

削除されたことを確認します。

screencapture-34-209-50-34-g-clusters-2018-06-24-00_23_14.png

AWSのダッシュボードからもクラスタが削除されていることを確認します。

image.png

特に問題なく簡単にEKSクラスタを作成することができました。

ただ、事前に一度、EKSにCLIでクラスタを構築したことがあり、VPC等作成済みだったこともあると思います。

一度こちらのサイトを参考にしてEKSクラスタを作成してから実施する必要があるかもしれません。