coreOSを利用して自宅kubernetes環境をkubesprayで構築する(その2
前回からの続き。[
<div class="blogcard-snippet internal-blogcard-snippet">
勉強のため、k8sことkubernetesを構築しようと思い立った。正直いまだに、コンテナオーケストレーションってなに?という状態なのではあるが、触れる環境がないと難しいのと、課金が怖いので、AzureやAWS、GCPの無料枠を利用した環境...
</div>
といっても今回は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追記
マージされた。
めっちゃしょぼいcommitだけれどもk8s系のOSSにマージされたのではれてcontributerになった(contributerってアイコンがついていればそうなんだよねーよくわかってない。)
— 息子の奴隷🍼 (@tiggergatolynx) January 19, 2020
inventory.pyの中にあるloadだと、うまく動作しないため、load_allにしておくと良い。
<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環境は一旦構築ができるはず。この後微調整が必要となるので、この後は後日。