
★悩み★
・Kubernetesクラスタを構築したいけど、kubeadmを使うしかないのかな。
・Kubernetesクラスタを1コマンドで構築する方法はないかな。
・kubesprayでKubernetesクラスタを簡単に構築できるのかな。
こういった「悩み」に答えます。
 
★本記事の内容★
kubesprayでKubernetesクラスタを構築する手順をご紹介
これからご紹介する「kubesprayでKubernetesクラスタを構築する手順」を実践したことで、30分以内で「Kubernetesクラスタを構築」できました。
記事の前半では「kubesprayをインストールする手順」を解説しつつ、記事の後半では「kubesprayでKubernetesクラスタを構築する手順」を紹介します。
この記事を読み終えることで、「Kubernetesクラスタを構築した」状態になります。
 
★Kubernetesとは★
Kubernetesを利用することで、マイクロサービスなシステムを構築できます。Kubernetesを利用したマイクロサービスに関して知りたい方は、以下の記事をご覧ください。
 
Kubernetesとマイクロサービスについて
ちなみに、「Kubernetesを体系的に学習したい」方には、以下の記事がお勧めです。
 
 
 
kubesprayでKubernetesクラスタを構築する手順

「kubesprayでKubernetesクラスタを構築する手順」に関してご紹介します。
★kubesprayでKubernetesクラスタを構築するまでの流れ★
手順1:kubesprayに必要なライブラリをインストール
手順2:kubesprayのインストール
手順3:kubesprayのセットアップ
手順4:kubesprayでKubernetesクラスタを構築
手順5:kubesprayで構築したKubernetesクラスタの確認
上記の流れで、「kubesprayでKubernetesクラスタを構築」できます。
 
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年4月11日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「kubesprayでKubernetesクラスタを構築するまでの流れ」の各手順に関してご説明します。
 
手順1:kubesprayに必要なライブラリをインストール
「手順1:kubesprayに必要なライブラリをインストール」に関してご説明します。
 
kubesprayでKubernetesクラスタを構築するためには、Pythonとgitコマンドのインストールが必要です。
「Pythonのインストール手順」に関しては、以下の記事をご覧ください。
 
「gitコマンドのインストール手順」に関しては、以下の記事をご覧ください。
 
以上で、「手順1:kubesprayに必要なライブラリをインストール」は完了です。
 
手順2:kubesprayのインストール
「手順2:kubesprayのインストール」に関してご説明します。
 
gitコマンド経由でkubesprayをインストールしましょう。
端末またはコマンドプロンプトを起動し、gitコマンド経由でkubesprayをインストールするために、以下のコマンドを実行します。
# git clone https://github.com/kubernetes-sigs/kubespray.git
# cd kubespray/
# ls
CNAME            RELEASE.md           contrib          mitogen.yml                setup.cfg
CONTRIBUTING.md  SECURITY_CONTACTS    docs             recover-control-plane.yml  setup.py
Dockerfile       Vagrantfile          extra_playbooks  remove-node.yml            test-infra
LICENSE          _config.yml          facts.yml        requirements.txt           tests
Makefile         ansible.cfg          index.html       reset.yml                  upgrade-cluster.yml
OWNERS           ansible_version.yml  inventory        roles
OWNERS_ALIASES   cluster.yml          library          scale.yml
README.md        code-of-conduct.md   logo             scripts
上記「kubespray」ディレクトリが作成された場合、「正常にkubesprayをインストールできた」と判断できます。
以上で、「手順2:kubesprayのインストール」は完了です。
 
手順3:kubesprayのセットアップ
「手順3:kubesprayのセットアップ」に関してご説明します。
 
「構築したいKubernetesクラスタの構成」をkubesprayの設定ファイルに記載しましょう。
本記事で構築するKubernetesクラスタは、下図となります。
 

kubesprayでKubernetesクラスタを構築するためには、各サーバに2GB以上のメモリが必要です。
kubesprayの設定ファイルを作成するために、以下のコマンドを順に実行してください。
# cd kubespray/
# pip install -r requirements.txt
# cp -rfp inventory/sample inventory/mycluster
# ls inventory/mycluster/
group_vars  inventory.ini
# declare -a IPS=(192.168.10.150 192.168.10.151 192.168.10.152)
# CONFIG_FILE=inventory/mycluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# ls inventory/mycluster/hosts.yml
hosts.yml
コマンド実行後、kubesprayの設定ファイルである「hosts.yml」が存在することを確認しましょう。その後、「hosts.yml」を以下のように編集してください。
# cat inventory/mycluster/hosts.yml
all:
  hosts:
    node1:
      ansible_host: 192.168.10.150
      ip: 192.168.10.150
      access_ip: 192.168.10.150
    node2:
      ansible_host: 192.168.10.151
      ip: 192.168.10.151
      access_ip: 192.168.10.151
    node3:
      ansible_host: 192.168.10.152
      ip: 192.168.10.152
      access_ip: 192.168.10.152
  children:
    kube_control_plane: ★マスターにしたいノード(サーバ)を設定★
      hosts:
        node1:
    kube-node: ★ワーカーにしたいノード(サーバ)を設定★
      hosts:
        node2:
        node3:
    etcd:
      hosts:
        node1:
    k8s-cluster:
      children:
        kube_control_plane:
        kube-node:
    calico-rr:
      hosts: {}
以上で、「手順3:kubesprayのセットアップ」は完了です。
 
手順4:kubesprayでKubernetesクラスタを構築
「手順4:kubesprayでKubernetesクラスタを構築」に関してご説明します。
 
kubesprayでKubernetesクラスタを構築してみましょう。kubesprayを利用することで、1コマンドでKubernetesクラスタを構築できます。
Kubernetesクラスタを構築するために、以下のコマンドを実行しましょう。
# cd kubespray/
# ansible-playbook -i inventory/mycluster/hosts.yml cluster.yml
・
・
・
download_container | Download image if required ------------------------------------------------------- 5.79s
download_file | Download item ------------------------------------------------------------------------- 5.38s
Configure | Check if etcd cluster is healthy ---------------------------------------------------------- 5.14s
# echo $?
0
コマンド実行後、「echo $?」の返却値が「0」である場合、「正常にkubesprayでKubernetesクラスタを構築できた」と判断できます。
 
コマンド実行時に下記エラーが発生した場合、「yum -y install conntrack-tools」を各サーバで実行しましょう。
★エラー内容★
fatal: [node1]: FAILED! => {"attempts": 4, "changed": false, "msg": "No package matching 'conntrack' found available, installed or updated", "rc": 126, "results": ["libselinux-python-2.5-14.1.el7.x86_64 providing libselinux-python is already installed", "7:device-mapper-libs-1.02.158-2.el7.x86_64 providing device-mapper-libs is already installed", "nss-3.44.0-4.el7.x86_64 providing nss is already installed", "No package matching 'conntrack' found available, installed or updated"]}
以上で、「手順4:kubesprayでKubernetesクラスタを構築」は完了です。
 
手順5:kubesprayで構築したKubernetesクラスタの確認
「手順5:kubesprayで構築したKubernetesクラスタの確認」に関してご説明します。
 
Kubernetes関連のコマンドを実行し、Kubernetesクラスタが構築できたことを確認しましょう。
Kubernetesクラスタの動作確認をするために、以下のコマンドを実行しましょう。
# kubectl get nodes
NAME    STATUS   ROLES                  AGE     VERSION
node1   Ready    control-plane,master   3m47s   v1.20.5
node2   Ready    <none>                 2m55s   v1.20.5
node3   Ready    <none>                 2m55s   v1.20.5
上記のように「node1〜3のSTATUSがReady」である場合、「Kubernetesクラスタが正常に動いている」と判断できます。
以上で、「手順5:kubesprayで構築したKubernetesクラスタの確認」は完了です。
 
上記の手順で、kubesprayでKubernetesクラスタを構築できました。
Kubernetesの仕組みや運用手順などを知りたい方には、以下の参考書をお勧めします。
 
【まとめ】kubesprayでKubernetesクラスタを構築する手順
今回の記事を通して、「kubesprayでKubernetesクラスタを構築する手順」をご紹介することで、以下の悩みを解消しました。
 
★悩み★
・Kubernetesクラスタを構築したいけど、kubeadmを使うしかないのかな。
・Kubernetesクラスタをワンコマンドで構築する方法はないかな。
・kubesprayでKubernetesクラスタを簡単に構築できるのかな。
「kubesprayでKubernetesクラスタを構築する手順は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
 
 
 
  
  
  
  






コメント