目次

coreOSを利用して自宅kubernetes環境をkubesprayで構築する(その2


前回からの続き。[

coreOSを利用して自宅kubernetes環境をkubesprayで構築する(その1
<div class="blogcard-snippet internal-blogcard-snippet">
  勉強のため、k8sことkubernetesを構築しようと思い立った。正直いまだに、コンテナオーケストレーションってなに?という状態なのではあるが、触れる環境がないと難しいのと、課金が怖いので、AzureやAWS、GCPの無料枠を利用した環境...
</div>
][1]{.blogcard-wrap.internal-blogcard-wrap.a-wrap.cf}

といっても今回はAnsibleを叩くだけ。
ただそのUsageもいくつか詰まるところがあったのでメモ。

pipを利用したrequirementsのインストール

しょっぱなのhow to useから罠。

# Install dependencies from ``requirements.txt``
sudo pip install -r requirements.txt

この後ででてくるが、python3とを前提としているようなので、以下のようにしないと動作しない。最初から詰まるとは思わなくて小一時間気がつかなかった。

sudo pip3 install -r requirements.txt
#pip3 を利用してpython3が要求するモジュールを利用する

inventory.pyの修正

declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
#この時の、10.10.1.3, 10.10.1.4 ,10.10.1.5 は順にMaster,Master,NodeのノードのIPアドレスとなる。環境に合わせて変更。

CONFIG_FILE=inventory/mycluster/inventory.ini python3 contrib/inventory_builder/inventory.py ${IPS[@]}

こちらもひっかかった。こちらは間違いじゃないかなとおもってIssueとPRを出しておいた。

2020.01.27追記
マージされた。

inventory.pyの中にあるloadだと、うまく動作しないため、load_allにしておくと良い。

"ruamel.yaml.composer.ComposerError" bug related in inventory.py, line 81. · Issue #5373 · kubernetes-sigs/kubespray
<div class="blogcard-snippet external-blogcard-snippet">
  When I try by usage. I got an error below. $ CONFIG_FILE=inventory/mycluster/inventory.ini python3 contrib/inventory_builder/inventory.py ${IPS} Traceback (most...
</div>

Masterノードの修正

作成した環境はMaster,Node,Nodeとする予定だったので、Master以外のVMに割りあてたメモリが少ない。このままだとMasterのリソースチェックにひっかかるため、inventory.pyを修正してMasterを1つ目のVMにしておく。

Ansible実行時にiniファイルが利用できない

# Deploy Kubespray with Ansible Playbook - run the playbook as root
# The option `--become` is required, as for example writing SSL keys in /etc/,
# installing packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run!
ansible-playbook -i inventory/mycluster/inventory.ini --become --become-user=root cluster.yml

多分これもバグだと思うのだけれどもIssueしていない。
作成されるファイルはiniファイルと言いながら中身はyaml。
それでもって、ansibleスクリプト内で、一部yamlとして解釈をさせようとしているところが(たしか)あったので、そのままだと失敗する。

また、これは今回の環境のみに言えること。coreOSで、初期ユーザがCoreユーザなので、playbook実行時にユーザを指定しておく。
鍵認証のため、 _–private-key=PRIVATE_KEY_FILE_も併用する

cp -p inventory/mycluster/inventory.ini inventory/mycluster/inventory.yml
ansible-playbook -i inventory/mycluster/inventory.yml --private-key=PRIVATE_KEY_FILE -u core --become --become-user=root cluster.yml

これでplaybookを実行すればk8s環境は一旦構築ができるはず。この後微調整が必要となるので、この後は後日。