microk8s(Kubernetes)インストール
microk8s (Kubernetes) インストール
目次
-
kubernetes 構成
-
サーバ構成
-
ノード構成
-
-
インストール
-
SNAP インストール
-
microk8s インストール
-
アドオン インストール
-
-
状態確認
-
状態確認
-
-
Kubernetes構成
-
サーバ構成
-
パソコン工房のワークステーション
スペック:
CPU |
Xeon W-1270P プロセッサー (8コア/16スレッド) |
|
メモリ | 128 GB | |
ストレージ1 |
|
|
ストレージ2 | 1000 GB SSD / NVMe M.2 | |
ストレージ3 | 6000 GB HDD |
富士通 PRIMERGY TX1310M3
スペック:
CPU | Xeon E3-1225v6(3.3GHz/4コア/3MB) |
メモリ | 48 GB |
ストレージ1 | 256 GB SSD / NVMe M.2 |
ストレージ2 | 1000 GB SSD / NVMe M.2 |
ストレージ3 | 6000 GB HDD |
-
ノード構成
ノード1(ESXi) から 1VM、ノード2(ESXi) から 2VM 使用しクラスターを組みます。
今回はクラスターを組むまでですが、ゴールはWebサーバコンテナを3台、
APサーバコンテナを3台、NoSQLサーバを3台の構成で構築して、サービスを立ち上げます。
VMのOSはすべて、RHEL8.4となっています。
まずはインストールからクラスタの組み込みまで行います。
-
インストール
-
SNAPインストール
-
※クラスターノードで実施(本例では1~3VM で実行)
- epel から snapd をインストールする
実行コマンド: # dnf --enablerepo=epel -y install snapd
以下実行例
[root@hoge-rhel8-dev00 work]# dnf --enablerepo=epel -y install snapd Updating Subscription Management repositories. メタデータの期限切れの最終確認: 2:25:53 時間前の 2021年11月11日 15時54分30秒 に実施しました。 パッケージ snapd-2.52-1.el8.x86_64 は既にインストールされています。 依存関係が解決しました。 =============================================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ =============================================================================================================================================== アップグレード: snap-confine x86_64 2.53.1-2.el8 epel 3.3 M snapd x86_64 2.53.1-2.el8 epel 17 M snapd-selinux noarch 2.53.1-2.el8 epel 461 k トランザクションの概要 =============================================================================================================================================== アップグレード 3 パッケージ ダウンロードサイズの合計: 21 M パッケージのダウンロード: [=== ] --- B/s | 0 B --:-- ETA [=== ] --- B/s | 0 B --:-- ETA [ === ] --- B/s | 0 B --:-- ETA (1/3): snap-confine-2.53.1-2.el8.x86_64.rpm 0% [ ] --- B/s | 0 B --:-- ETA (1/3): snapd-selinux-2.53.1-2.el8.noarch.rpm 2.5 MB/s | 461 kB 00:00 (2-3/3): snap-confine-2.53.1-2.el8.x86_64.rpm 2% [= ] 2.5 MB/s | 461 kB 00:08 ETA (2-3/3): snapd-2.53.1-2.el8.x86_64.rpm 2% [= ] 2.0 MB/s | 467 kB 00:10 ETA (2/3): snap-confine-2.53.1-2.el8.x86_64.rpm 2.9 MB/s | 3.3 MB 00:01 (3/3): snapd-2.53.1-2.el8.x86_64.rpm 17% [========= ] 2.7 MB/s | 3.8 MB 00:06 ETA (3/3): snapd-2.53.1-2.el8.x86_64.rpm 18% [========= ] 2.5 MB/s | 3.8 MB 00:06 ETA (3/3): snapd-2.53.1-2.el8.x86_64.rpm 66% [================================== ] 4.4 MB/s | 14 MB 00:01 ETA (3/3): snapd-2.53.1-2.el8.x86_64.rpm 71% [====================================- ] 4.3 MB/s | 15 MB 00:01 ETA (3/3): snapd-2.53.1-2.el8.x86_64.rpm 91% [============================================== ] 4.9 MB/s | 19 MB 00:00 ETA (3/3): snapd-2.53.1-2.el8.x86_64.rpm 6.6 MB/s | 17 MB 00:02 ----------------------------------------------------------------------------------------------------------------------------------------------- 合計 5.3 MB/s | 21 MB 00:03 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : [============================================================================================== ] 1/1 scriptletの実行中: snapd-selinux-2.53.1-2.el8.noarch 1/1 scriptletの実行中: snapd-selinux-2.53.1-2.el8.noarch 1/6 アップグレード中 : snapd-selinux-2.53.1-2.el8.noarch [================================================================================ ] 1/6 scriptletの実行中: snapd-selinux-2.53.1-2.el8.noarch 1/6 アップグレード中 : snap-confine-2.53.1-2.el8.x86_64 [================================================================================= ] 2/6 アップグレード中 : snapd-2.53.1-2.el8.x86_64 [======================================================================================== ] 3/6 scriptletの実行中: snapd-2.53.1-2.el8.x86_64 3/6 整理 : snapd-2.52-1.el8.x86_64 [========================================================================================= ] 4/6 scriptletの実行中: snapd-2.52-1.el8.x86_64 4/6 整理 : snapd-selinux-2.52-1.el8.noarch [==================================================================== ] 5/6 整理 : snapd-selinux-2.52-1.el8.noarch 5/6 scriptletの実行中: snapd-selinux-2.52-1.el8.noarch 5/6 整理 : snap-confine-2.52-1.el8.x86_64 [================================================================================ ] 6/6 整理 : snap-confine-2.52-1.el8.x86_64 6/6 scriptletの実行中: snapd-selinux-2.53.1-2.el8.noarch 6/6 scriptletの実行中: snap-confine-2.52-1.el8.x86_64 6/6 検証 : snap-confine-2.53.1-2.el8.x86_64 1/6 検証 : snap-confine-2.52-1.el8.x86_64 2/6 検証 : snapd-2.53.1-2.el8.x86_64 3/6 検証 : snapd-2.52-1.el8.x86_64 4/6 検証 : snapd-selinux-2.53.1-2.el8.noarch 5/6 検証 : snapd-selinux-2.52-1.el8.noarch 6/6 Installed products updated. アップグレード済み: snap-confine-2.53.1-2.el8.x86_64 snapd-2.53.1-2.el8.x86_64 snapd-selinux-2.53.1-2.el8.noarch 完了しました!
- シンボリックリンク作成
実行コマンド:ln -s /var/lib/snapd/snap /snap
※返値なし
- 環境変数設定
実行コマンド:echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' > /etc/profile.d/snap.sh
※返値なし
- snap サービス起動
実行コマンド:systemctl enable --now snapd.service snapd.socket
以下実行例
[root@hoge-rhel8-dev00 work]# systemctl enable --now snapd.service snapd.socket Created symlink /etc/systemd/system/multi-user.target.wants/snapd.service → /usr/lib/systemd/system/snapd.service. Created symlink /etc/systemd/system/sockets.target.wants/snapd.socket → /usr/lib/systemd/system/snapd.socket.
-
microk8s インストール
- microk8s インストール
実行コマンド:snap install microk8s --classic
以下実行例
[root@hoge-rhel8-dev00 work]# snap install microk8s --classic Ensure prerequisites for "microk8s" are available / Ensure prerequisites for "microk8s" are available / Download snap "snapd" (13640) from channel "stable" - Download snap "snapd" (13640) from channel "stable" 0% 0B/s ages! Download snap "microk8s" (2551) from channel "1.22/stable" 100% 892kB/s 0.0ns Fetch and check assertions for snap "microk8s" (2551) / Mount snap "microk8s" (2551) \ Setup snap "microk8s" (2551) security profiles | Setup snap "microk8s" (2551) security profiles for auto-connections / Run install hook of "microk8s" snap if present / Start snap "microk8s" (2551) services / Run configure hook of "microk8s" snap if present - Warning: /var/lib/snapd/snap/bin was not found in your $PATH. If you've not restarted your session since you installed snapd, try doing that. Please see https://forum.snapcraft.io/t/9469 for more details. microk8s (1.22/stable) v1.22.2 from Canonical? installed
- ユーザをmicrok8sグループに追加
実行コマンド:usermod -a -G microk8s $USER
※返値なし
- .kubeディレクトリ権限変更
実行コマンド:chown -f -R $USER ~/.kube
※返値なし
- ログアウト
環境変数を読み込むため、一度言ログアウトして、再ログインする
- クラスター組み込み
- マスターノードで以下コマンド実施
実行コマンド:microk8s add-node
実行例
[root@hoge-rhel8-dev00 ~]# microk8s add-node From the node you wish to join to this cluster, run the following: microk8s join 192.168.1.100:25000/749e7bfedffabc798994625cd125e74c/4dc987694061 ★コピー
- クラスターへノード追加
実行コマンド:microk8s join 192.168.1.100:25000/749e7bfedffabc798994625cd125e74c/4dc987694061
実行例
[root@hoge-rhel8-dev02 ~]# microk8s join 192.168.1.100:25000/749e7bfedffabc798994625cd125e74c/4dc98769406 Contacting cluster at 192.168.1.100 Waiting for this node to finish joining the cluster. ..
-
add-on install
- 以下のコマンドでアドオンを有効化する
# microk8s enable dashboard
# microk8s enable dns
# microk8s enable ingress
# microk8s enable metallb
# microk8s enable metrics-server
# microk8s enable multus
# microk8s enable rbac
# microk8s enable registry
# microk8s enable storage
※ metallb は有効にする際、IPの入力を求められるので、
普段通信しているネットワーク帯域かつ、利用していないアドレスを入力する
以下例
[root@hoge-rhel8-dev00 ~]# microk8s enable metallb ingress ambassador dashboard dns helm3 host-access multus rbac registry storage traefik Enabling MetalLB Enter each IP address range delimited by comma (e.g. '10.64.140.43-10.64.140.49,192.168.0.105-192.168.0.111'): 192.168.1.200-192.168.1.209
-
状態確認
- クラスター確認
実行コマンド:microk8s kubectl get nodes
以下実行例
[root@hoge-rhel8-dev00 ~]# microk8s kubectl get nodes NAME STATUS ROLES AGE VERSION hoge-rhel8-dev00 Ready2d18h v1.22.3-3+9ec7c40ec93c73 hoge-rhel8-dev02 Ready 2d17h v1.22.3-3+9ec7c40ec93c73 hoge-rhel8-dev01 Ready 2d17h v1.22.2-3+9ad9ee77396805
- アドオン確認
実行コマンド:microk8s status --wait-ready
以下実行例(先ほど有効化したアドオンがenable に入っている)
[root@hoge-rhel8-dev00 New-WebServer]# microk8s status --wait-ready microk8s is running high-availability: yes datastore master nodes: 192.168.1.100:19001 192.168.1.101:19001 192.168.1.103:19001 datastore standby nodes: none addons: enabled: dashboard # The Kubernetes dashboard dns # CoreDNS ha-cluster # Configure high availability on the current node ingress # Ingress controller for external access metallb # Loadbalancer for your Kubernetes cluster metrics-server # K8s Metrics Server for API access to service metrics multus # Multus CNI enables attaching multiple network interfaces to pods rbac # Role-Based Access Control for authorisation registry # Private image registry exposed on localhost:32000 storage # Storage class; allocates storage from host directory disabled: ambassador # Ambassador API Gateway and Ingress cilium # SDN, fast with full network policy fluentd # Elasticsearch-Fluentd-Kibana logging and monitoring gpu # Automatic enablement of Nvidia CUDA helm # Helm 2 - the package manager for Kubernetes helm3 # Helm 3 - Kubernetes package manager host-access # Allow Pods connecting to Host services smoothly istio # Core Istio service mesh services jaeger # Kubernetes Jaeger operator with its simple config kata # Kata Containers is a secure runtime with lightweight VMS keda # Kubernetes-based Event Driven Autoscaling knative # The Knative framework on Kubernetes. kubeflow # Kubeflow for easy ML deployments linkerd # Linkerd is a service mesh for Kubernetes and other frameworks openebs # OpenEBS is the open-source storage solution for Kubernetes openfaas # openfaas serverless framework portainer # Portainer UI for your Kubernetes cluster prometheus # Prometheus operator for monitoring and logging traefik # traefik Ingress controller for external access
以上で、microk8sのクラスター化は完了です。
お疲れさまでした!