Org Org Org Org Org Org Org Org

おうち じかん

Org Org Org Org Org Org Org Org

microk8s(Kubernetes)インストール

  • slide

microk8s (Kubernetes) インストール

目次

  1. kubernetes 構成

    1. サーバ構成

    2. ノード構成

  2. インストール

    1. SNAP インストール

    2. microk8s インストール

    3. アドオン インストール

  3. 状態確認

    1. 状態確認


  1. Kubernetes構成

    1. サーバ構成

パソコン工房のワークステーション

スペック:

CPU

Xeon W-1270P プロセッサー

(8コア/16スレッド)

メモリ 128 GB 
ストレージ1
250 GB SSD / NVMe M.2
ストレージ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. ノード構成

ノード1(ESXi) から 1VM、ノード2(ESXi) から 2VM 使用しクラスターを組みます。

今回はクラスターを組むまでですが、ゴールはWebサーバコンテナを3台、

APサーバコンテナを3台、NoSQLサーバを3台の構成で構築して、サービスを立ち上げます。

VMのOSはすべて、RHEL8.4となっています。

まずはインストールからクラスタの組み込みまで行います。


  1. インストール

    1. SNAPインストール

※クラスターノードで実施(本例では1~3VM で実行)

  1. 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                

完了しました!

 

  1. シンボリックリンク作成

 

実行コマンド:ln -s /var/lib/snapd/snap /snap

※返値なし

 

  1. 環境変数設定

 

実行コマンド:echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' > /etc/profile.d/snap.sh

※返値なし

 

  1. 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.

  1. microk8s インストール

  1. 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

 

  1. ユーザをmicrok8sグループに追加

 

実行コマンド:usermod -a -G microk8s $USER

※返値なし

 

  1. .kubeディレクトリ権限変更

 

実行コマンド:chown -f -R $USER ~/.kube

※返値なし

 

  1. ログアウト

 

環境変数を読み込むため、一度言ログアウトして、再ログインする

 

  1. クラスター組み込み

 

  • マスターノードで以下コマンド実施

実行コマンド: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. ..  

  1. 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


  1. 状態確認

  • クラスター確認

 

実行コマンド:microk8s kubectl get nodes

以下実行例

[root@hoge-rhel8-dev00 ~]# microk8s kubectl get nodes
NAME               STATUS   ROLES    AGE     VERSION
hoge-rhel8-dev00   Ready       2d18h   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のクラスター化は完了です。

お疲れさまでした!