proxmox上のvmでk3sを使ったk8sクラスタを構築する
proxmox上のlxcコンテナにk8sを構築したい
proxmoxはインストール済みとする
特権コンテナで起動する
起動するコンテナは特権コンテナでないとうまくいかないみたいようだ
もし非特権コンテナで起動してしまった場合は一度コンテナをバックアップしリストアするときに特権コンテナで起動し直す事ができる
swapを無効にする
コンテナ内からではなくpveホストのコンソールから
sudo swapoff -a
を実行し、
/etc/fstab
の/dev/pve/swap none swap sw 0 0
をコメントアウトする
参考
IP Forwardを有効にする
/etc/sysctl.conf
内の net.ipv4.ip_forward
を1にする
変更後再起動する
/sbin/sysctl net.ipv4.ip_forward
で1が返されればOK
0の場合は
/sbin/sysctl -w net.ipv4.ip_forward=1
で設定できる
参考
/dev/kmsg
の対応
failed to create kubelet: open /dev/kmsg: no such file or directory
と言われる。/dev/kmsg
に、/dev/console
のリンクを貼って対応
ln -s /dev/console /dev/kmsg
echo 'L /dev/kmsg - - - - /dev/console' > /etc/tmpfiles.d/kmsg.conf
参考
オリジナルのk8sをインストールしようかと思ったがk3sという軽量k8sがあるようなのでそっちをインストールすることにする
機能が制限されて使えないものが多いと嫌だなと思ったがこれを見る限り結構良さそう
セットアップにはk3supを使う
(ケチャップと読むらしい)
コンテナのどれか1つで
curl -sLS https://get.k3sup.dev | sh
を実行し、他のコンテナへSSHできるようにする。
コンテナ上のUbuntu22.04で動かそうとしたが/procあたりで権限がないと言われ断念。
pveのフォーラムで推奨されてたvmでの起動を試す
k3osというk3s用のOSがあるようなのでこれを使ってみる
contral nodeをインストール後にtokenをコピー
他のノードにSSHしてtokenを貼り付ける
IP固定とホスト名変更
IPなどは適宜置き換えて使う
sudo connmanctl services
sudo connmanctl config ethernet_c68be0070a09_cable --ipv4 manual 192.168.30.128 255.255.255.0 192.168.30.1 --nameservers 192.168.30.1
sudo connmanctl config ethernet_c68be0070a09_cable --nameservers 192.168.30.1
sudo connmanctl config ethernet_c68be0070a09_cable --ipv6 off
sudo service connman restart
sudo vim /var/lib/rancher/k3os/hostname
sudo reboot
参考
ArgoCDを導入する
とりあえずWEB GUIが見れる状態まで持っていってカスタマイズしていくことにする
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
これでArgo自体のデプロイは完了
クラスタの外からアクセスするために既存のinstall.yamlによって作成されたargocd-server.yaml
にNodePort
で接続する設定を行う。
以下yamlをargocd-server.yamlとして保存する
apiVersion: v1
kind: Service
metadata:
name: argocd-server
namespace: argocd
spec:
type: NodePort
ports:
ports:
- name: http
nodePort: 30080
port: 80
protocol: TCP
targetPort: 8080
- name: https
nodePort: 30443
port: 443
protocol: TCP
targetPort: 8443
selector:
app.kubernetes.io/name: argocd-server
app.kubernetes.io/part-of: argocd
yamlを反映、確認
kubectl apply -f argocd-server.yaml
kubectl get svc argocd-server -n argocd
参考
先にkustomizeを導入してkustomization.yamlを書いてもいいかもしれない
残りはGutHubで記録していく