macでElasticsearch on Kubernetesを試す

Pocket
LinkedIn にシェア
LINEで送る
Facebook にシェア

2019/07/20時点でのDocker Desktop for Macの最新版が2.0.0.3で付属のk8sはv1.10.11となっており、ECKはv1.11+のため動かない(実際起動出来なかった)ためEdge版で対応した。

1.Edge版のDocker for Macのインストール

こちらからEdge版のをダウンロードし、インストールする。

2.k8sの有効化

ツールバー上のDocker Desktop for Macのアイコンクリックから「Preferences」を選択し、「Kubernetes」タブの「Enable Kubernetes」にチェックを入れ「Apply」をクリックする。

3.メモリ設定

デフォルトだとDockerのメモリサイズが2GBになっていたため「Advanced」タブで増やす。

4.k8sの起動確認

ターミナルから以下のコマンドで起動していることを確認する。

% kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
docker-desktop   Ready    master   56m   v1.14.3

5.ECKのOperatorsをk8sに追加

こちらに従ってECKをセットアップする。

% kubectl apply -f https://download.elastic.co/downloads/eck/0.8.1/all-in-one.yaml

# 追加後に以下のコマンドで確認すると「elastic-system」が増えている
% kubectl get namespaces
NAME              STATUS   AGE
default           Active   61m
docker            Active   60m
elastic-system    Active   55m
kube-node-lease   Active   61m
kube-public       Active   61m
kube-system       Active   61m

6.ECKの設定ファイルを取得

起動して動作確認出来ればいいのでこちらからサンプルを取得する。サンプルの中でLoadBalancerのコメントアウトを外しておいた(とりあえず楽にアクセスするため)

  http:
   service:
     spec:
       type: LoadBalancer

7.ECKの起動

以下で起動(個人的にkustomize使っていたのでちゃんと起動するか未確認)

% kubectl apply -f kibana_es.yaml

8.ログインアカウント・パスワードの取得

起動したkibanaにはログインが必要となるので以下で確認しておく。

# 以下の「elasticsearch-sample-elastic-user」がログインアカウントとなる
% kubectl get secrets
NAME                                        TYPE                                  DATA   AGE
default-token-cfllc                         kubernetes.io/service-account-token   3      5m57s
elasticsearch-sample-ca                     Opaque                                1      5m56s
elasticsearch-sample-ca-private-key         Opaque                                1      5m56s
elasticsearch-sample-elastic-user           Opaque                                1      5m56s
elasticsearch-sample-es-9hf2jntgbk-certs    Opaque                                3      5m55s
elasticsearch-sample-es-9hf2jntgbk-config   Opaque                                1      5m55s
elasticsearch-sample-es-roles-users         Opaque                                3      5m55s
elasticsearch-sample-extrafiles             Opaque                                1      5m55s
elasticsearch-sample-internal-users         Opaque                                3      5m56s
elasticsearch-sample-secure-settings        Opaque                                0      5m56s
kibana-sample-es-ca                         Opaque                                1      5m56s
kibana-sample-kibana-user                   Opaque                                1      5m57s

# 以下でパスワードを取得
% kubectl get secret elasticsearch-sample-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode

# 表示されるパスワードの最後に「%」があれば、それを除いたものがパスワードになる

9.ECKの起動を待つ

% kubectl get pods -o wide --watch
NAME                                   READY   STATUS     RESTARTS   AGE   IP          NODE             NOMINATED NODE   READINESS GATES

...
elasticsearch-sample-es-9hf2jntgbk     1/1     Running           0          2m21s   10.1.0.12   docker-desktop   <none>           <none>
kibana-sample-kibana-6fc8dfbb4-8v694   1/1     Running           0          2m27s   10.1.0.11   docker-desktop   <none>           <none>

# 最終的にelasticsearch-*とkibana-*が「1/1 Running」になれば起動完了

10.LBの確認

設定をいじって起動するようにしたLoadBalancerを確認する。

 k -n apm get services
NAME                                TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
elasticsearch-sample-es             ClusterIP      10.106.130.44   <none>        9200/TCP         63m
elasticsearch-sample-es-discovery   ClusterIP      None            <none>        9300/TCP         63m
kibana-sample-kibana                LoadBalancer   10.106.71.250   localhost     5601:31636/TCP   63m

# EXTERNAL-IPが「localhost」とPORTが「5601」で存在することを確認

11.kibanaへのアクセス

http://localhost:5601でアクセスし、先程確認したログインアカウントでログインする。