1
2

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 3 years have passed since last update.

EKS-D(Amazon EKS Distro)使ってみた

Last updated at Posted at 2020-12-06

EKS-D を早速使ってみました。
Ubuntu Server 20.10にsnapでeks-dをインストールしてノード追加するだけの記事です。

参考

Find out how easy it is to install EKS-D using Canonical’s MicroK8s, in a snap.

環境

役割 ホスト名 IPアドレス OS
マスターノード ubekssvr01 192.168.21.30/24 Ubuntu Server 20.10(x86_64)
追加ノード ubekssvr02 192.168.21.31/24 Ubuntu Server 20.10(x86_64)

EKS-D のインストール

インストールはコマンド一発で簡単でした。
これで環境ができてるっぽい。

s64s@ubekssvr01:~$ sudo snap install eks --classic --edge
eks (1.18/edge) v1.18.9 from Canonical? installed
s64s@ubekssvr01:~$

追加ノード側でも EKS-D をインストールします。

s64s@ubekssvr02:~$ sudo snap install eks --classic --edge
eks (1.18/edge) v1.18.9 from Canonical? installed
s64s@ubekssvr02:~$

ステータスの確認。この状態になるまでちょっと時間かかりました。

s64s@ubekssvr01:~$ sudo eks status
eks is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
s64s@ubekssvr01:~$

ちなみに起動完了前はこんな出力でした。

s64s@ubekssvr01:~$ sudo eks status
eks is not running. Use eks inspect for a deeper inspection.
s64s@ubekssvr01:~$

snap 側での確認は以下の通りでした。

s64s@ubekssvr01:~$ snap services eks
Service                          Startup  Current  Notes
eks.daemon-apiserver             enabled  active   -
eks.daemon-apiserver-kicker      enabled  active   -
eks.daemon-cluster-agent         enabled  active   -
eks.daemon-containerd            enabled  active   -
eks.daemon-control-plane-kicker  enabled  active   -
eks.daemon-controller-manager    enabled  active   -
eks.daemon-kubelet               enabled  active   -
eks.daemon-proxy                 enabled  active   -
eks.daemon-scheduler             enabled  active   -
s64s@ubekssvr01:~$

ノードの追加

マスターノードで以下のコマンドを実行すると、追加ノード側で実行するコマンドが表示されます。

s64s@ubekssvr01:~$ sudo eks add-node
From the node you wish to join to this cluster, run the following:
eks join 192.168.21.30:25000/acde01fb6bb2218a7ed53b0f793023ad

If the node you are adding is not reachable through the default interface you can use one of the following:
 eks join 192.168.1.30:25000/acde01fb6bb2218a7ed53b0f793023ad
 eks join 192.168.21.30:25000/acde01fb6bb2218a7ed53b0f793023ad
 eks join 192.168.100.30:25000/acde01fb6bb2218a7ed53b0f793023ad
 eks join 10.1.82.128:25000/acde01fb6bb2218a7ed53b0f793023ad
s64s@ubekssvr01:~$

追加ノード(ubekssvr02)で表示された通りコマンドを実行します。

s64s@ubekssvr02:~$ sudo eks join 192.168.21.30:25000/acde01fb6bb2218a7ed53b0f793023ad
[sudo] password for s64s:
Contacting cluster at 192.168.21.30
Waiting for this node to finish joining the cluster. ..
s64s@ubekssvr02:~$

追加ノードを確認します。

s64s@ubekssvr01:~$ sudo eks kubectl get node -o wide
NAME         STATUS   ROLES    AGE     VERSION              INTERNAL-IP     EXTERNAL-IP   OS-IMAGE       KERNEL-VERSION     CONTAINER-RUNTIME
ubekssvr01   Ready    <none>   7m58s   v1.18.9-eks-1-18-1   192.168.21.30   <none>        Ubuntu 20.10   5.8.0-31-generic   containerd://1.3.7
ubekssvr02   Ready    <none>   112s    v1.18.9-eks-1-18-1   192.168.21.31   <none>        Ubuntu 20.10   5.8.0-31-generic   containerd://1.3.7
s64s@ubekssvr01:~$

起動している pod は次の通りです。

NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
kube-system   hostpath-provisioner-66667bf7f-p25f2       1/1     Running   0          20m   10.1.82.131     ubekssvr01   <none>           <none>
kube-system   coredns-6788f546c9-pzm4t                   1/1     Running   0          21m   10.1.82.132     ubekssvr01   <none>           <none>
kube-system   calico-kube-controllers-555fc8cc5c-qtjz8   1/1     Running   0          21m   10.1.82.133     ubekssvr01   <none>           <none>
kube-system   metrics-server-768748c8f4-mz5bc            1/1     Running   0          21m   10.1.82.134     ubekssvr01   <none>           <none>
kube-system   calico-node-z9l75                          1/1     Running   0          15m   192.168.21.30   ubekssvr01   <none>           <none>
kube-system   calico-node-jdw6b                          1/1     Running   0          15m   192.168.21.31   ubekssvr02   <none>           <none>
s64s@ubekssvr01:~$

感想

コマンド一発でインストールできたのでとても簡単でした。ノード追加も楽でいいですね。
使い方はまだわからないので、おいおい調べてく感じですね。

おまけ

helm のインストール。

sudo snap install helm --classic

Storage Classでnfsを使用できるようにします。
事前にNFSサーバは下記パラメータで設定しています。

NFSサーバ IPアドレス 公開パス
192.168.21.50 /eks-d_nfs

ubuntuにnfs-commonを入れていないとnfs-client-provisionerのpodがPendingのままになってしまいましたので予めインストールしておきます。

sudo apt install nfs-common

helmでnfs-client-provisionerをインストールします。

helm install nfs-client-provisioner stable/nfs-client-provisioner \
--set nfs.server=192.168.21.50 \
--set nfs.path=/eks-d_nfs \
--set storageClass.reclaimPolicy=Retain

helmインストール結果を確認します。
STATUSがdeployedとなっていることが確認できます。

s64s@ubekssvr01:~$ helm ls
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
nfs-client-provisioner  default         1               2020-12-06 15:46:29.579710863 +0000 UTC deployed        nfs-client-provisioner-1.2.11   3.1.0
s64s@ubekssvr01:~$

podを確認するとnfs-client-provisionerが存在しています。

s64s@ubekssvr01:~$ sudo eks kubectl get pod -A -o wide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
kube-system   hostpath-provisioner-66667bf7f-p25f2       1/1     Running   0          72m   10.1.82.131     ubekssvr01   <none>           <none>
kube-system   coredns-6788f546c9-pzm4t                   1/1     Running   0          72m   10.1.82.132     ubekssvr01   <none>           <none>
kube-system   calico-kube-controllers-555fc8cc5c-qtjz8   1/1     Running   0          72m   10.1.82.133     ubekssvr01   <none>           <none>
kube-system   metrics-server-768748c8f4-mz5bc            1/1     Running   0          72m   10.1.82.134     ubekssvr01   <none>           <none>
kube-system   calico-node-z9l75                          1/1     Running   0          67m   192.168.21.30   ubekssvr01   <none>           <none>
kube-system   calico-node-jdw6b                          1/1     Running   0          66m   192.168.21.31   ubekssvr02   <none>           <none>
default       nfs-client-provisioner-56c4f96ff4-m5l7f    1/1     Running   0          52m   10.1.206.193    ubekssvr02   <none>           <none>
s64s@ubekssvr01:~$

Storage Class の状態を確認します。nfs-clientが追加されました。

s64s@ubekssvr01:~$ sudo eks kubectl get sc
[sudo] password for s64s:
NAME                          PROVISIONER                            RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
microk8s-hostpath (default)   microk8s.io/hostpath                   Delete          Immediate           false                  50m
nfs-client                    cluster.local/nfs-client-provisioner   Retain          Immediate           true                   30m
s64s@ubekssvr01:~$

microk8s-hostpathがデフォルトポリシーになっています。
今回はnfs-clientをデフォルトポリシーに変更します。

まずはmicrok8s-hostpathのデフォルトポリシーを無効にします。

s64s@ubekssvr01:~$ sudo eks kubectl patch sc microk8s-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
storageclass.storage.k8s.io/microk8s-hostpath patched

nfs-clientをデフォルトポリシーに設定します。

s64s@ubekssvr01:~$ sudo eks kubectl patch sc nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/nfs-client patched

Storage Classの確認をします。
nfs-client (default) となり、デフォルトポリシーになっていることが確認できました。

s64s@ubekssvr01:~$ sudo eks kubectl get sc
NAME                   PROVISIONER                            RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
microk8s-hostpath      microk8s.io/hostpath                   Delete          Immediate           false                  53m
nfs-client (default)   cluster.local/nfs-client-provisioner   Retain          Immediate           true                   33m
s64s@ubekssvr01:~$

使用リソース

作業後のメモリ利用状況はこのくらいでした。

s64s@ubekssvr01:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          11969        1118        6367           2        4484       10601
Swap:          4095           0        4095
s64s@ubekssvr01:~$
s64s@ubekssvr02:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15895         820       10727           3        4347       14843
Swap:          4095           0        4095
s64s@ubekssvr02:~$

以上です。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?