LoginSignup
9
5

More than 5 years have passed since last update.

Docker for Mac上のRancherでEKSクラスタをつくる

Last updated at Posted at 2018-06-26

なんの話?

以前書きましたが、EKSクラスタの構築は非常にめんどうです。
https://qiita.com/taishin/items/a32b4ac2c3f73cd02abb

Rancherの2系はEKSのデプロイもサポートしています。が、リリース当初はぜん
先日リリースされたv2.0.3でちゃんとデプロイできるようになりました。
https://qiita.com/cyberblack28/items/d444015edd99cab1ba43

Rancherを使えば、よく分からないEKS用kubectlやHeptio Authenticator AWSといったもののセットアップも不要、ノード登録のためのConfigMapなんかも不要で、かなり簡単にEKSクラスタをつくることができます。

Rancherを使う場合、Rancherサーバ用インスタンスが必要になるよねーって話になるんですが、自分のMac上のDocker for MacにRancherサーバのコンテナをデプロイすればインスタンスいらないのでは? という話です。

手順

Docker for Mac がインストールされたMacで普通にRancher立ち上げます。

$ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS
       NAMES
5080491358e1        rancher/rancher     "rancher --http-list…"   24 seconds ago      Up 23 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443
/tcp   stupefied_bhabha

起動しました。

ブラウザでhttps://localhostにアクセスします。

image.png

見れました。
ログインします。

image.png

Server URL がlocalhostでいいのか? ホストがアクセスできないんじゃないの? って言われますけど、そのまま進みます。
EC2でクラスタつくる場合は、EC2からRancherのServer URLにアクセスできないといけなかったような気がしましたが、EKSはAPI叩ければそれでいいような気がします。

image.png

あとは、ここ の手順通りEKSをセットアップします。

image.png

問題なくできました。

この環境だとkubeconfigはこんな感じです。

apiVersion: v1
kind: Config
clusters:
- name: "eks-1"
  cluster:
    server: "https://localhost/k8s/clusters/c-pjgr6"
    api-version: v1
    certificate-authority-data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM3akNDQ\
  (略)

serverがlocalhostなので、kubectlはローカルのRancherにアクセスすることになります。

$ kubectl get all                                                                                        NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   10m
$ kubectl get nodes
NAME                                            STATUS    ROLES     AGE       VERSION
ip-192-168-152-186.us-west-2.compute.internal   Ready     <none>    4m        v1.10.3
ip-192-168-212-16.us-west-2.compute.internal    Ready     <none>    4m        v1.10.3
ip-192-168-66-200.us-west-2.compute.internal    Ready     <none>    4m        v1.10.3
$ kubectl run nginx --image=nginx --port=80
deployment.apps "nginx" created

$ kubectl get pods
NAME                     READY     STATUS    RESTARTS   AGE
nginx-768979984b-6jqv4   1/1       Running   0          49s

$ kubectl expose deployment nginx --type="LoadBalancer"
service "nginx" exposed

$ kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP        PORT(S)        AGE
kubernetes   ClusterIP      10.100.0.1      <none>             443/TCP        14m
nginx        LoadBalancer   10.100.19.166   aeb2a89ff7916...   80:31789/TCP   1m

いまのところ問題なく使えてます。

まとめ

EKSはRancherでつくるのが楽だよ
Docker for MacでRancherつくれはRancher用インスタンスはいらないよ
って話でした。
(この構成問題あるよとか情報あれば教えてください)

9
5
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
9
5