Closed8

proxmox上のvmでk3sを使ったk8sクラスタを構築する

ほなふくほなふく

特権コンテナで起動する

起動するコンテナは特権コンテナでないとうまくいかないみたいようだ
もし非特権コンテナで起動してしまった場合は一度コンテナをバックアップしリストアするときに特権コンテナで起動し直す事ができる

swapを無効にする

コンテナ内からではなくpveホストのコンソールから

sudo swapoff -a

を実行し、
/etc/fstab/dev/pve/swap none swap sw 0 0をコメントアウトする

参考
https://gist.github.com/triangletodd/02f595cd4c0dc9aac5f7763ca2264185?permalink_comment_id=3998596

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

で設定できる

参考
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/load_balancer_administration/s1-lvs-forwarding-vsa

/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

参考
https://zenn.dev/ddpn08/articles/d85176619f3fdd

ほなふくほなふく

オリジナルのk8sをインストールしようかと思ったがk3sという軽量k8sがあるようなのでそっちをインストールすることにする
機能が制限されて使えないものが多いと嫌だなと思ったがこれを見る限り結構良さそう
https://github.com/k3s-io/k3s/#what-have-you-removed-from-upstream-kubernetes

セットアップにはk3supを使う
(ケチャップと読むらしい)
https://github.com/alexellis/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

参考
https://www.centlinux.com/2019/05/configure-network-on-k3os-machine.html

ほなふくほなふく

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.yamlNodePort で接続する設定を行う。
以下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

参考
https://argo-cd.readthedocs.io/en/stable/getting_started/

このスクラップは2023/05/05にクローズされました