MicroK8s のインストールと HA-Cluster 設定

MicroK8s は簡単に Kubernetes 環境を構築でき、スタンドアローンでも利用可能で、HA-Cluster の構築も1つのコマンドで構成できます。
Kubernetes の環境自体をコンテナのように壊して再作成できるところが非常に魅力的です。

MicroK8s のインストールも非常に簡単で snap を利用します。ファイアウォールの設定さえ適切に行えば問題なくすぐに利用できます。
特に HA-Cluster 機能を利用すれば簡単に高可用な Kubernetes Cluster の構築が完了します。Kubernetes node で障害が発生したとしても、簡単に再作成が可能です。

ファイアウォール設定

内部ホスト間の port 解放を行います。

| ポート |        サービス        |                                          アクセス制限                                           |
| ------ | ---------------------- | ----------------------------------------------------------------------------------------------- |
| 16443  | APIサーバー            | SSL暗号化。クライアントは、静的パスワードファイルから有効なパスワードを提示する必要があります。 |
| 10250  | kubelet                | 匿名認証は無効になっています。X509クライアント証明書が必要です。                                |
| 10255  | kubelet                | Kubeletの読み取り専用ポート。                                                                   |
| 25000  | クラスターエージェント | アクションを承認するために必要な適切なトークン。                                                |
| 12379  | etcd                   | SSL暗号化。接続に必要なクライアント証明書。                                                     |
| 10257  | kube-controller        | 認証と承認を使用してHTTPSを提供します。                                                         |
| 10259  | kube-scheduler         | 認証と承認を使用してHTTPSを提供します。                                                         |
| 19001  | dqlite                 | SSL暗号化。接続に必要なクライアント証明書。                                                     |
| 16443  | APIサーバー            | SSL暗号化。クライアントは、静的パスワードファイルから有効なパスワードを提示する必要があります。 |
| 10250  | kubelet                | 匿名認証は無効になっています。X509クライアント証明書が必要です。                                |
| 10255  | kubelet                | Kubeletの読み取り専用ポート。                                                                   |
| 25000  | クラスターエージェント | アクションを承認するために必要な適切なトークン。                                                |
| 12379  | etcd                   | SSL暗号化。接続に必要なクライアント証明書。                                                     |
| 10257  | kube-controller        | 認証と承認を使用してHTTPSを提供します。                                                         |
| 10259  | kube-scheduler         | 認証と承認を使用してHTTPSを提供します。                                                         |
| 19001  | dqlite                 | SSL暗号化。接続に必要なクライアント証明書。                                                     |

インストール

sudo snap install microk8s --classic --channel=latest/stable

現在のユーザを microk8s グループに追加

sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
sudo su - $USER

必要であれば kubectl の Aliase 設定

sudo snap alias microk8s.kubectl kubectl

アドオンを利用

microk8s enable dns storage helm3 ingress ha-cluster

HA-Cluster設定

以下を実行すると cluster に参加するためのトークンが払いだされます。
合計3台以上のノードが稼働している必要がありますので最低2台追加します。

microk8s add-node
Join node with:
microk8s join ip-172-31-20-243:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

If the node you are adding is not reachable through the default
interface you can use one of the following:

microk8s join 10.1.84.0:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf
microk8s join 10.22.254.77:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

追加したいノードでトークンを含んだ join コマンドを実行します。

microk8s join 192.17\683:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

ノードの稼働状態

microk8s kubectl get node
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    <none>   8d    v1.22.3-3+64e63223b19811
node4   Ready    <none>   8d    v1.22.3-3+64e63223b19811
node3   Ready    <none>   8d    v1.22.3-3+64e63223b19811
node2   Ready    <none>   8d    v1.22.3-3+64e63223b19811
node5   Ready    <none>   8d    v1.22.3-3+64e63223b19811

全てのノードで障害ドメインの設定

echo "failure-domain=42" > /var/snap/microk8s/current/args/ha-conf && \
microk8s.stop && microk8s.start

既存のノード・クラスターの更新

既存のクラスターのバージョンを変更する場合

sudo snap refresh microk8s --classic --channel=1.19/stable

既存のクラスターのアップグレードする場合

sudo snap refresh microk8s --channel=1.19/stable

マスターノードで HA クラスタリングを有効

microk8s enable ha-cluster

ノードのドレーニングを行いクラスターに再度参加

microk8s kubectl drain <node> --ignore-daemonsets

クリーニング

ノードの初期化

microk8s.reset

自身のノードをクラスターから切り離し

クラスターから自信を削除

microk8s leave

クラスターから node 切り離し

microk8s remove-node 10.22.254.79

microk8s 削除( –purege で完全削除)

sudo snap remove microk8s --purge

MicroK8s を利用した Kubernetes Cluster について紹介しました。簡単に Kubernetes 環境が構築でき、1台から利用可能ですのでお試しください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です