
実行するとkos kubectl get storageclass
プロビジョニングされていないことに気づき、手動で追加する必要があります。正確な手順についてはよくわかりません。[ドキュメント][https://docs.k0sproject.io/main/storage/]によると、k0sにはOpenEBSがインストールされています。わからないのは、この拡張機能を有効にする設定ファイル内。
既存の設定ファイルにはこれだけがあります (これがデフォルトの設定ファイルであるはずです。これで正しいでしょうか?):
spec:
api:
externalAddress
実行したk0s stop
後、設定ファイルを次のように修正しました。
spec:
api:
externalAddress
extensions:
storage:
type: openebs_local_storage
この構成変更後も、クラスターのストレージクラスが見つからないという同じエラーが発生します。k0s も再インストールする必要がありますか? 既存の k0s.yaml には、リンクに示されているサンプルと比較して、構成パラメーターが非常に少ないように見えるため、少し不安です。
編集: 使用ドキュメンテーション既存のデフォルト設定を使用する新しい k0s.yaml の生成を進めました。既存の k0s.yaml (上記) が上書きされることが判明しました。また、新しい yaml ファイルに変更を加えて、次の結果を作成しました。
apiVersion: k0s.k0sproject.io/v1beta1
kind: ClusterConfig
metadata:
creationTimestamp: null
name: k0s
spec:
api:
address: 10.XXX.XXX.XXX
k0sApiPort: 9443
port: 6443
sans:
- 10.XX.XX.XXX
- 172.XX.XX.XXX
- 10.XX.XX.XXX
- 10.XX.XX.XXX
- fe80::XXX:XXX:XXX:XXX
- fe80::XXX:XXX:XXX:XXX
- fe80::XXX:XXX:XXX:XXX
- fe80::XXX:XXX:XXX:XXX
- fe80::XXX:XXX:XXX:XXX
- fe80::XXX:XXX:XXX:XXX
tunneledNetworkingMode: false
controllerManager: {}
extensions:
helm:
charts: null
repositories: null
storage:
create_default_storage_class: true
type: openebs_local_storage
images:
calico:
cni:
image: docker.io/calico/cni
version: v3.21.2
kubecontrollers:
image: docker.io/calico/kube-controllers
この変更後、クラスターの再インストール(新しい構成を使用)を実行します。
k0s install controller -c /etc/k0s/k0s.yaml
しかし、今はエラーが発生しています:
Error: failed to install k0s service: failed to install service: Init already exists: /etc/systemd/system/k0scontroller.service
答え1
問題を再現できました。OpenEBS ストレージの新しい構成でクラスターを再インストールするには、以前のセットアップをクリーンアップする必要があります。
- k0s サービスを停止します。
sudo k0s stop
- カスタマイズされた構成ファイルなしで行われた以前のインストールをリセットします。
sudo k0s reset
- 新しい設定ファイルと
--enable-worker
フラグ -> を使用して k0s を再インストールすると、コントローラーとワーカー機能を備えた単一ノード k0s が再度インストールされます。
sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
- k0s サービスを開始します。
sudo k0s start
- 数秒後、クラスター上で使用できる 2 つのストレージ クラスが有効になっていることを確認します。
sudo k0s kubectl get storageclass
ストレージ クラスにはvolumeBindingMode: WaitForFirstConsumer
- が含まれます。つまり、アプリケーション ポッドがノード上でスケジュールされるまで、ボリュームのバインドに遅延が発生します。