1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmoxで豪華盛り合わせ環境(LXD,microk8s共存)を作る

Last updated at Posted at 2024-07-19

ProxmoxVEのインストール

入手元

https://www.proxmox.com/en/downloads
上記サイトからProxmox VE 8.2 ISO Installer を取得しインストールメディアを作成
ProxmoxVEのインストールに関してはインストーラーなりに進めれば特に詰まるところはないかと
FQDNに関しては例えばpve.localとかにしておけばOK

インストール完了後再起動すると
https://xxx.xxx.xxx.xxx:8006/
とProxmoxVEの管理画面のアドレスが表示されるのでブラウザでアクセスする

どの道リポジトリに問題があるので以下二つのエンタープライズリポジトリの無効化
image.png
以下の二つのリポジトリの有効化を行う
image.png
その後アップデートで再表示を行うと更新リストが表示されるので全部完了するまで再表示とアップグレードを繰り返す
image.png

Web管理画面にログインするとサブスクリプションがないとポップアップ出る件に関しては
以下などを参照
https://suzu-ha.com/entry/2024/02/12/000000

SPICE接続する為のvirt-viewerは下記のWin x64 MSIから取得
https://virt-manager.org/download.html

Nested VM辺りの設定
https://pve.proxmox.com/wiki/Nested_Virtualization

共通初期設定

必要なパッケージをインストール

# apt install vim sudo

一般ユーザーを追加
proxmox環境ではwheelではなくsudo

# useradd user
# passwd user
# usermod -aG sudo user
# mkdir -p /home/user
# chown user:user /home/user

一般ユーザーにログインしてみる

# su user
$ chsh -s /usr/bin/bash

sudoパス不要化

$ sudo vim /etc/sudoers

末尾に以下を追記

/etc/sudoers
user ALL=NOPASSWD: ALL

snapのインストール

$ sudo apt install snapd

LXDのインストール

lxdのインストール

$ sudo snap install lxd

lxd initを実行してみるlxdが認識されない場合は再起動
上記のエラーがが出る場合ソケットに権限を割り当てる

$ lxd init
Error: Failed to connect to local LXD: Get "http://unix.socket/1.0": dial unix /var/snap/lxd/common/lxd/unix.socket: connect: permission denied

上記のエラーがが出る場合ソケットに権限を割り当てた後ログインし直す

$ sudo chown -R lxd:lxd /var/snap/lxd/common/lxd/
$ sudo usermod -aG lxd user

lxd initの実施
・storage poolは後で作るのでここでは作らない
・ipv6は邪魔なので無効にしておく
・webuiはここで有効かして差し支えない
以外は何も打たずにエンターでdefaultが選ばれる

$ lxd init

Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]: no
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like the LXD server to be available over the network? (yes/no) [default=no]: yes
Address to bind LXD to (not including port) [default=all]:
Port to bind LXD to [default=8443]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]:
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes
config:
  core.https_address: '[::]:8443'
networks:
- config:
    ipv4.address: auto
    ipv6.address: none
  description: ""
  name: lxdbr0
  type: ""
  project: default
storage_pools: []
storage_volumes: []
profiles:
- config: {}
  description: ""
  devices:
    eth0:
      name: eth0
      network: lxdbr0
      type: nic
  name: default
projects: []
cluster: null

完了したら
https://xxx.xxx.xxx.xxx:8443に繋いでみる
入ってみると証明書を作らないといけないのでGenerateしてcrtとpfxをダウンロードする
image.png

crtはWinSCPなどでサーバー側に移してから任意の場所で以下を実行
ファイル名は生成環境毎に異なる

$ lxc config trust add ******.crt

ブラウザ側はブラウザ毎に手順が異なるので書いてある通りに従う
クライアント、サーバー両方に証明書読み込んでブラウザを再起動したら以下のように全メニューにアクセスできるようになる
image.png

外部接続用Bridgeを作成
ここではマニュアルにあるbr0ではなくproxmoxのvmbr0にカスケードで繋ぐ

lxc profile create bridge
lxc network attach-profile vmbr0 bridge eth0
lxc profile device add bridge root disk path=/ pool=default

ストレージプールを作成
lxd init時に作らなかったのでここで作成
これがないとインスタンス作成やisoアップロードで失敗する
image.png

プール名、ファイルシステム、プールサイズを指定する
プール名はdefault
image.png
image.png

インスタンス作成
ひとまずブリッジ系が正しく動作してるかの確認でインストール完了が早いproxmoxのISOなどを使うとよいかも
インストールの時点でDHCPでのIP取得が確認できる

microk8sのインストール

基本手順は以下を参照一部捕捉
https://microk8s.io/

バージョンは1.29指定でインストール1.30だと後の操作のmicrok8s enable communityのところでエラーになる問題がある

$ sudo snap install microk8s --channel=1.29/stable --classic
$ microk8s status --wait-ready

以上を実行すると~/.kubeに書けないと出るので以下を実施した後ログインし直し

$ mkdir ~/.kube
$ sudo usermod -a -G microk8s user
$ sudo chown -R user ~/.kube

各種アドオンを有効化

$ microk8s enable dashboard
$ microk8s enable dns
$ microk8s enable registry
$ microk8s enable istio

istroを有効にするにはcommunityを有効にしろというメッセージが出るので従う
この時ver1.30だとmicrok8s enable communityに失敗する

$ microk8s enable community
$ microk8s enable istio

dashboard-proxyを実行するとトークンが発行されるので
https://xxx.xxx.xxx.xxx:10443/
にアクセスしてトークンでログインする

$ microk8s dashboard-proxy

全てのネームスペースを選択するとkubenetesの各リソースが正しく動作しているのが確認できる
image.png

podmanのインストール

DockerをインストールするとKVMのブリッジネットワークが壊れるので代わりにpodmanをインストールする

sudo apt install podman

エラー対応の為以下を追加した後再起動

~/.bashrc
alias ll="ls -l"
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus
/etc/containers/containers.conf
[engine]
cgroup_manager = "cgroupfs"

確認の為nginx podを起動

$ podman run -d --rm -p 8080:80 docker.io/library/nginx

cockpitのインストール

sudo apt install cockpit cockpit-podman
sudo systemctl enable --now cockpit.socket

ブラウザから https://xxx.xxx.xxx.xxx:9090/ にアクセスして確認

sambaのインストール

sudo apt install samba
sudo apt install samba
/etc/samba/smb.conf
[homes]
+   path = %H
+   valid users = %S, %D%w%S
+   read only = yes
-   read only = no
sudo systemctl enable --now smb
sudo systemctl enable --now nmb

エクスプローラーから \\xxx.xxx.xxx.xxx にアクセスして確認

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?