Open10
debian11 セットアップ & lxc セットアップ

OSインストールは終わったものとする
デスクトップ環境は無い、CLIのみでセットアップする

apt
apt update && apt install -y sudo vim
SSH
wget https://github.com/honahuku.keys
mv honahuku.keys authorized_keys
mkdir -p ~/.ssh
mv authorized_keys ~/.ssh
sudo systemctl restart sshd

IPの固定
# 設定のバックアップを取る
sudo cp /etc/network/interfaces /etc/network/interfaces.org
# 編集
sudo vim /etc/network/interfaces
auto enp0s25
iface enp0s25 inet static
address 192.168.30.5
netmask 255.255.255.0
gateway 192.168.30.1
dns-nameservers 192.168.30.1
doc:

lxcのインストール
snap
lxc公式のインストール手順に従ってsnapからlxcをインストールする
sudo apt install -y snapd
sudo systemctl enable --now snapd
lxc
sudo snap install lxd --channel=5.0/stable
sudo ln -s /snap/bin/* /usr/local/bin/
doc:

init
cat <<EOF | sudo lxd init --preseed
config: {}
networks:
- config:
ipv4.address: auto
ipv6.address: auto
description: ""
name: lxdbr0
type: ""
project: default
storage_pools:
- config: {}
description: ""
name: default
driver: dir
profiles:
- config: {}
description: ""
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: default
projects: []
cluster: null
EOF
doc:

コンテナ作成
CT_NAME=hoge
sudo lxc launch images:debian/11 $CT_NAME
コンテナ設定の編集
lxcコンテナでk8sを動かすためにいくつか設定する
wget https://raw.githubusercontent.com/honahuku/manifest/main/doc/lxc/config.yaml
sudo lxc config show $CT_NAME > org.yaml
# 既存の設定をマージするためにyqを入れる
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq
# マージする
# 重複する項目はconfig.yamlで上書きされる
yq eval-all 'select(fileIndex == 0) * select(fileIndex == 1)' org.yaml config.yaml > merged.yaml
# 設定を反映する
sudo lxc config edit $CT_NAME < merged.yaml
doc:

ポートフォワードの設定
/sbin/sysctl net.ipv4.ip_forward
を実行して1が返ってくることを確認する
帰ってこない場合は proxmoxのコンテナにk8sクラスタを構築する を参考に設定する

シェルにログイン
sudo lxc exec $CT_NAME bash

kubeadmの設定
initやjoinのパラメータに追加で
--ignore-preflight-errors=FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
を付与する必要がある

lxcコンテナの操作
コンテナ名はCT_NAME=hoge
で予め定義しているものとする
起動
sudo lxc start $CT_NAME
停止
sudo lxc stop $CT_NAME
コンテナのリスト
sudo lxc list
コンテナの情報表示
sudo lxc info $CT_NAME
スナップショット
作成
lxc snapshot コンテナ名 スナップショット名
でスナップショットが取れる
スナップショット名は省略できる
sudo lxc snapshot $CT_NAME
スナップショットの一覧
sudo lxc info $CT_NAME
スナップショットの削除
sudo lxc delete $CT_NAME/[snapshot-name]