Closed11

k8sに入門した(その1)「LXD上のmicrok8sにデモをdeployする」

🤨🤔😑😨😱🤨🤔😑😨😱

lxd上のmicrok8sでk8sを試してみて、k8sとは何なのか理解する。
thinkpad x230のubuntu server上でk8sを試してみる。

ubuntu serverのダウンロード: https://jp.ubuntu.com/download してインストールする。

パソコンを閉じてもスリープにならないように設定。

/etc/systemd/logind.conf
HandleLidSwitch=ignore
🤨🤔😑😨😱🤨🤔😑😨😱

https://microk8s.io/docs/lxd を参考にlxdコンテナでmicrok8sクラスタを作ってみる。

lxdのインストール

snap install lxd

lxdを初期化

lxd init --minimal

lxcのprofileを設定

wget https://raw.githubusercontent.com/ubuntu/microk8s/master/tests/lxc/microk8s.profile -O microk8s.profile
lxc profile create microk8s
cat microk8s.profile | lxc profile edit microk8s
rm microk8s.profile

コンテナの起動

lxc launch -p default -p microk8s ubuntu:20.04 microk8s

コンテナ内にmicrok8sをインストール

lxc exec microk8s -- sudo snap install microk8s --classic
🤨🤔😑😨😱🤨🤔😑😨😱

コンテナ内に入る。

lxc shell microk8s

謎の設定

cat > /etc/rc.local <<EOF
#!/bin/bash

apparmor_parser --replace /var/lib/snapd/apparmor/profiles/snap.microk8s.*
exit 0
EOF
chmod +x /etc/rc.local
exit

これでlxdのコンテナ内でmicrok8sを動かせるようになった。

🤨🤔😑😨😱🤨🤔😑😨😱

早速用意した環境内でmicrobot(https://hub.docker.com/r/dontrebootme/microbot)を動かして遊んでみる。

最初に起動してるコンテナの確認方法

lxc exec microk8s -- microk8s kubectl get all

早速、microbotのデプロイ

 lxc exec microk8s -- sudo microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1

Port 80番を外に晒す。

lxc exec microk8s -- sudo microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-service

今回は、32370が割り当てられた。

🤨🤔😑😨😱🤨🤔😑😨😱

lxcの設定をして32370を外に出す。

lxc config device add microk8s port_forward proxy listen=tcp:0.0.0.0:32370 connect=tcp:127.0.0.1:32370 bind=host

microbotにアクセス出来る。

🤨🤔😑😨😱🤨🤔😑😨😱

複数立ち上げる

lxc exec microk8s -- microk8s kubectl scale --replicas=2 deployment microbot

複数立ち上がってることを確認

for i in $(seq 1000); do w3m -dump http://localhost:32370/ | grep hostname; done | sort | uniq -c

2つに分散してアクセス出来ている。

🤨🤔😑😨😱🤨🤔😑😨😱

アップデートしてみる

lxc exec microk8s -- microk8s kubectl set image deployments/microbot microbot=dontrebootme/microbot:v2

アクセスすると画像が変わる。

🤨🤔😑😨😱🤨🤔😑😨😱

ロールバック

lxc exec microk8s -- microk8s kubectl rollout undo deployments/microbot

前のバージョンに戻せる。

🤨🤔😑😨😱🤨🤔😑😨😱

環境を綺麗に消す。

lxc exec microk8s --  microk8s reset --destroy-storage

microk8sを止める

lxc exec microk8s --  microk8s reset --destroy-storage

実験用コンテナの削除

lxc stop microk8s
lxc delete microk8s

これで綺麗サッパリ元通り。
lxdってすごい便利だ。

🤨🤔😑😨😱🤨🤔😑😨😱

k8sとはコンテナのアップデートとかデプロイとかレプリカとかの管理を自動化するツールってことがわかった。LXDはすごい便利だ。Macで使えないのかな。

次の目標

  1. 複数ノード環境の作成
  2. もっと実用的なコンテナのデプロイ
  3. dashboard等のGUI管理ツールを試す。
このスクラップは2022/02/19にクローズされました