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台から利用可能ですのでお試しください。