⛳
k0sでクラスタ作成
k0sのクラスタをGCPで作ってみます
(GKE使った方が手っ取り早いですが・・・)
基本的に公式サイト通りにやればOKです
最初からsystemdの設定をする部分と、kubectlを打つ側がWAN側にいる場合について補足しています
構成
controllerノード x 1
workerノード x 1
ローカルPC(kubectl) x 1
こんな感じのインスタンスを用意します
今回はdebian10でやってみましたが、ubuntuでも問題なかったです
k0sのインストール
controller, worker両方で以下のように実行します
(2021/01/03時点ではv0.9.1が最新でした)
wget https://github.com/k0sproject/k0s/releases/download/v0.9.1/k0s-v0.9.1-amd64 -O /usr/local/bin/k0s
chmod +x /usr/local/bin/k0s
controller設定
systemdの設定
k0s install --role server
mkdir /etc/k0s
k0s default-config > /etc/k0s/k0s.yaml
# spec.api.sans にグローバルIPを追加します(今回はGCP外のローカルPCからkubectlコマンドを打つため、証明書のsanにグローバルIPを追加します)
vim /etc/k0s/k0s.yaml
# "--config" /etc/k0s/k0s.yaml のように設定して、configファイルのパスに書き換えます
vim /etc/systemd/system/k0s.service
systemctl daemon-reload
systemctl start k0s
以下のコマンドでトークンを作成します
作成した/tmp/tokenをworkerに転送しておきます
今回はworkerの/etc/k0s/tokenに置きました
k0s token create --role=worker > /tmp/token
kubectl用の設定ファイルも作成しておきます
作成した/tmp/configはkubectlを発行するローカルPCの~/.kube/configに保存します
k0s kubeconfig create --groups "system:masters" yamasita > /tmp/config
worker設定
systemdの設定を行います
k0s install --role worker
設定ファイルを編集してtokenファイルの場所を指すようにします
vim /etc/systemd/system/k0s.service
# --token-file "REPLACEME" の部分を --token-file /etc/k0s/token に変更
起動
systemctl daemon-reload
systemctl start k0s
clientの設定
controller側で作成した/tmp/configを~/.kube/configに保存し、
clusters.cluster.serverの値をグローバルIPに変えます
vim ~/.kube/config
権限設定
kubectl create clusterrolebinding yamasita-admin-binding --clusterrole=admin --user=yamasita
あとはnodeがreadyになっていれば使えるようになります
kubectl get node
Discussion