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を許可しておきましょう。
デフォルトユーザであるadminユーザのパスワード設定。
「Save URL」ボタンを押下します。
ログイン完了となります。
上部メニューから「Catalogs」を選択し、「Helm stable」を「Enable」に変更します。
上部メニューから「Global」を選択します。
Rancher2.0 v2.0.3からEKSにクラスタ構築
「Add Cluster」ボタンを押下します。
「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」ボタンを押下します。
「Instance Type」で「t2.medium」を選択します。
「Create」ボタンを押下します。
10分ほどでクラスタが完成します。Activeステータスになったらクラスタ名をクリックします。
クラスタのリソースを確認できます。
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」ボタンを押下します。
「Copy to Clipboard」をクリックして、「Close」ボタンを押下します。
$ 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のダッシュボードからもクラスタが構築できていることを確認します。
Rancher2.0 v2.0.3からEKSにクラスタを削除
対象のクラスタにチェックを入れて、「Delete」ボタンを押下します。
「Delete」ボタンを押下します。
削除されたことを確認します。
AWSのダッシュボードからもクラスタが削除されていることを確認します。
特に問題なく簡単にEKSクラスタを作成することができました。
ただ、事前に一度、EKSにCLIでクラスタを構築したことがあり、VPC等作成済みだったこともあると思います。
一度こちらのサイトを参考にしてEKSクラスタを作成してから実施する必要があるかもしれません。