LoginSignup
2
1

More than 3 years have passed since last update.

kubesprayを使用したKubernetesクラスタの構築

Posted at

kubespray

kubesprayはAnsibleをベースとしたKubernetesのデプロイツールです。
https://github.com/kubernetes-sigs/kubespray

使用する機会があったので構築手順をメモ書き程度に残したいと思います。
今回はESXi上に5台のマシンを使用したKubernetesクラスタを構築してみました。

構成

役割

node1: master/etcd
node2: master/etcd
node3: master/etcd
node4: node
node5: node

node-mgmt: ansible-playbookを実行するマシン

Linux Distribution

CentOS7.6
 - image: CentOS-7-x86_64-DVD-1810.iso
 - Minimal Install

Resource

CPU: 2Core
Memory: 2GB

IP address

node1-3: 172.31.20.100 - 172.31.20.102
node4-5: 172.31.20.110 - 172.31.20.111

下準備

README.mdのRequirementsには以下のように記載されているので,各nodeでfirewalldを無効化しておきます。

The firewalls are not managed, you'll need to implement your own rules the way you used to. in order to avoid any issue during deployment you should disable your firewall.

以降の作業は全てnode-mgmtのrootユーザで行います。

kubesprayのcloneと実行用パッケージのインストール

まずはpython3とgitをインストールします。

yum -y update
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y install python36u python36u-pip git

kubesprayは再現性のためタグを指定してcloneします。
git clone後、pipを使用してrequirements.txtからpythonパッケージをインストールします。

git clone https://github.com/kubernetes-sigs/kubespray.git -b v2.10.4
cd kubespray
pip3.6 install -r requirements.txt

ansibleは2.8.xだと実行が失敗するようです。
yumでインストールすると2.8.xになるので行わないようにしましょう。
2019/8現在のMasterブランチではRequirementsに以下のような記載があります。

Ansible v2.7.8 (or newer, but not 2.8.x)

ちなみにrequirements.txtの中身は以下です。

requirements.txt
ansible==2.7.8
jinja2==2.10.1
netaddr==0.7.19
pbr==5.2.0
hvac==0.8.2
jmespath==0.9.4
ruamel.yaml==0.15.96

hosts.ymlの作成

以下のコマンドでhosts.ymlを作成します。

cp -r inventory/sample inventory/mycluster
declare -a IPS=(172.31.20.100 172.31.20.101 172.31.20.102 172.31.20.110 172.31.20.111)
CONFIG_FILE=inventory/mycluster/hosts.yml python3.6 contrib/inventory_builder/inventory.py ${IPS[@]}

実行後にinventory/mycluster/hosts.ymlが作成されるので、kube-master:,kube-node:,etcd:hosts:を編集します。

hosts.yml(抜粋)
all:
  children:
    kube-master:
      hosts:
        node1:
        node2:
        node3:
    kube-node:
      hosts:
        node4:
        node5:
    etcd:
      hosts:
        node1:
        node2:
        node3:

その後,構築する環境に合わせてinventory/mycluster/group_vars/all/all.ymlinventory/mycluster/group_vars/k8s-cluster/k8s-cluster.ymlを編集しますが,今回はデフォルトのまま構築します。

playbook実行

SSHキーペアを作成し、公開鍵を各ホストに配布します。

ssh-keygen -t rsa -b 4096
ssh-copy-id root@172.31.20.100
以下省略

以下のコマンドでplaybookを実行します。
今回はrootでログインするので-bオプションは省略しています。

ansible-playbook -i inventory/mycluster/hosts.yml cluster.yml -v

しばらく待てば構築完了です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1