【RKE2/rancher2.6.1】rancherからRKE2クラスターを構築する(Tech Preview - RKE2 Cluster Provisioning)
本記事で行うこと
本記事で行わないこと
- rancherの構築 ※rancherの構築は以下を参照ください。
モチベーション
- 自宅サーバが増えたので、single構成だったk3sからControlPlane、Worker、rancher、dns serverの4台構成で、改めてkubernetes環境を作りたかったため。
- せっかくなのでRKE2を使ってみたかったため。
環境
- 基本構成は以下の通り。
種別 | HW | OS | CPU | MEM |
---|---|---|---|---|
DNS | raspberry pi 3 model b+ | Ubuntu 20.04.3 LTS | Cortex-A53 4コア | 1GB |
rancher server (2.6.1) | GMK NucBox | Ubuntu 20.04.3 LTS | IntelJ4125 4コア | 8GB |
control plane, etcd, worker | GMK NucBox | Ubuntu 20.04.3 LTS | IntelJ4125 4コア | 8GB |
worker | nuc 11世代 (NUC11PABi3) | Ubuntu 20.04.3 LTS | Core i3-1115G4 2コア(4スレッド) | 32GB(カスタマイズ) |
RKE2とは
- Kubernetesのディストーションの一つで、RKEとk3sの長所をそれぞれ組み合わせたようなもの。
- 米国連邦政府部門内のセキュリティとコンプライアンスに焦点をあてて作られているようです。
- 最近のkubernetesもそうですが、dockerに依存せず、Containerを扱えます。
アーキテクチャ
- RKE2のアーキテクチャは以下のとおりです。
- くわえて、rancher側のアーキテクチャが以下の通りで、RKE2側にrancherと通信するCluster AgentのPodがデプロイされます。
- このCluster AgentからrancherのDNSを引ける必要があるので注意が必要です。
- 詳しくは公式ドキュメントを参照ください。
RKE2 - Rancher's Next Generation Kubernetes Distribution
rancherからRKE2クラスターの雛形作成
RKE2/K3s
のtoggleを選択すると、Use existing nodes and create a cluster using RKE2/K3s
のTech Previewが選択できるようになります。- Customを選択します。
Cluster Configuration
- Clusterの初期設定をします。
Basics
- RKE2のバージョン、NWプラグイン、セキュリティを選択します。
- NWプラグインはcanalを使いたいのでcanalにします。
CISは使ってみたいので、v1.6を選択します。System Services
はすべて利用したいのでデフォルトとします。
- 追記
- CISの基準を満たしていないと、Cluster Provisioningに失敗します。
- なのでCISをOFFにしてProvisioningします。
- NWプラグインについては以下のブログがわかりやすいです。
Comparing Kubernetes Networking Providers
- CIS v1.6については以下を参照ください。
CIS 1.6 Self-Assessment Guide - RKE2 - Rancher's Next Generation Kubernetes Distribution
- Basicsはそれぞれ、以下の選択肢を選べます。
Member Roles
- デフォルトとしますが、rancher側でユーザを作成してClusterへのアクセスレベルを設定できます。
Add-On Config
- デフォルトとします
Agent Environment Vars
- デフォルトとします
etcd
- デフォルトとします
- ここでetcdのバックアップ世代、時間を選択できますが、後から変更可能です。
Labels & Annotations
- デフォルトとします
Networking
- デフォルトとします
Registries
- デフォルトとします
- Pull images for Rancher from public DockerHub
Upgrade Strategy
- デフォルトとします
Advanced
- デフォルトとします
RKE2クラスターのプロビジョニング
- 雛形が完成していれば以下の通りになっています。
クラスターへの追加
- クラスター名を選択して、Registrationを開きます。
- Node Roleにチェックをします。
- 今回は自己証明書を利用しているので
Insecure: Select this to skip TLS verification if your server has a self-signed certificate.
にチェックを入れます。 - 出来上がったコマンドをコピーして、それぞれ参加させたいOS上で実行します。
- Provisioning状態でしばらく待ちます。
- 10~20分くらいすれば以下のようにActiveになります。
EXPLORE CLUSTER
から構築した、Clusterが有効化されていれば完了です。
- 最終的にworkerを加えて以下になりました。
- この環境を今後、自宅のアプリの実行基盤として利用していきます。
うまく行かないとき
- Provisioning状態からActiveにならないときの確認方法です。
RKE2プロセスの起動確認
- RKE2プロセスはsystemdで起動されているのでstatusを見ます。
# Control Planeの場合 $ sudo systemctl status rke2-server.service # Workerの場合 $ sudo systemctl status rke2-agent.service
RKE2プロセスのログ確認
# Control Planeの場合 $ sudo journalctl -u rke2-server -f # Workerの場合 $ sudo journalctl -u rke2-agent -f
kubernetesリソースの確認
- rke2のデプロイはうまく行っているが、rancherと疎通できないときはkubectlでdeploymentの状態を確認します。
- cattle-system namespaceのリソースがうまく起動できていないときは、なにかエラーが発生しています。
$ sudo export KUBECONFIG=/etc/rancher/rke2/rke2.yaml $ sudo kubectl get nodes NAME STATUS ROLES AGE VERSION nucbox-002-hkm Ready control-plane,etcd,master,worker 40m v1.21.5+rke2r2 $ sudo kubectl kubectl get all -n cattle-system NAME READY STATUS RESTARTS AGE pod/cattle-cluster-agent-78767b885c-5ttn8 1/1 Running 5 38m pod/system-upgrade-controller-679575c7b4-7j8vv 1/1 Running 0 17m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/cattle-cluster-agent ClusterIP 10.43.57.9 <none> 80/TCP,443/TCP 42m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cattle-cluster-agent 1/1 1 1 42m deployment.apps/system-upgrade-controller 1/1 1 1 17m NAME DESIRED CURRENT READY AGE replicaset.apps/cattle-cluster-agent-75979cf449 0 0 0 41m replicaset.apps/cattle-cluster-agent-78767b885c 1 1 1 38m replicaset.apps/system-upgrade-controller-679575c7b4 1 1 1 17m $ sudo kubectl logs cattle-cluster-agent-78767b885c-5ttn8 -n cattle-system
後書き
- スペックのいいマシンでVM環境を作っても良かったのですが、消費電力と設置場所が小さい事という自分の要件があり、mini pcで自宅環境を整えました。
- DNS serverをubuntuからうまく見れなくて少しハマりました。。。
- また、Clusterの設定内容によってはデプロイが失敗することもあり、エラーを取り除くのにも数時間かかってしまいました。。
- もともとk3s環境で作った環境をすべて削除して今回のRKE2環境に作り直すので、しばらく掛かりそう・・・です。
まずprivate registry環境を作るところから初めて、その後build環境を整えます。
以上、rancherからRKE2クラスターを構築する(Tech Preview - RKE2 Cluster Provisioning)でした。