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:~$
以上です。