おうちk8sをつくろう

2023/12/12に公開

この記事は MatsuribaTech(祭り場Tech) Advent Calendar 2023 の12/11分です

おうちk8sの利点

  • インフラの勉強になる
  • 従量課金で破産する心配がない
  • 自由に爆破し放題

材料

  • x86系のcpuが乗ったPC 3台以上
    • おすすめ: N100とかを積んだミニPC
  • proxmoxのiso
  • ubuntu-serverのiso
  • rufusなどisoを書き込めるツール
  • 16GBくらいのUSBメモリ
  • cloudflareのアカウント
  • githubのアカウント

手順

1. USBにproxmoxのisoを焼く

お好みのツールでUSBメモリに焼いてください
使用するPCに合わせてMBR/GPTは切り替えてください

2. proxmoxをインストールする

各PCにproxmoxをインストールしてください
必要に応じてインストール方法の記事を参照してください

3. クラスタを組む

proxmoxのwebインターフェースからDatacenter→Clusterでクラスタの構成ができます

4. 各ノードにisoをアップロードする

ubuntu-serverのisoを各ノードのlocal→iso imagesからアップロードする

5. 各ノードでubuntu vmをセットアップする

minimalではなくstandardを選択し、microk8sを追加でインストールします

6. microk8sのセットアップ

6-1. メインノードでクラスタを作成する

snap alias microk8s.kubectl kubectl
microk8s enable ha-cluster dns rbac
microk8s add-node

他ノードで実行する用のコマンドが出力されるのでそれをメモします

6-2. 残りのノードでクラスタに参加する

microk8s join xxx.xxx.xxx.xxx:xxxxx/**************

先程メモしたコマンドを実行します

おまけ

metallbのセットアップ

microk8s enable metallb

argocdのセットアップ

1. マニフェストの適用

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

2. argocdへのログイン

kubectl get svc argocd-server -n argocd

アドレス、ポートを確認

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

パスワードを確認

ユーザー名: admin
パスワード: 先程確認したもの
でログインします

Discussion