MetalLBのIPAddressPoolを作る時に「ensure CRDs are installed first」エラーが出てしまう
はじめに
おうちKubernetesの設定をしている時、本エラーにハマったので共有のために記事を残しておきます。
環境
Kubectl Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Kubernetes Version: v1.28.7
CNI: Calico
作業手順
Kustomizeを利用したMetal LBのインストール手順に従って、以下のKustomizationファイルを作成した。
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: metallb-system
resources:
- github.com/metallb/metallb/config/native?ref=v0.14.3
- ipaddresspool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default
namespace: metallb-system
spec:
addresses:
- 192.168.11.200-192.168.11.250
このKustomizationファイルをkustomize apply -k ./metallb
で適用しようと試みたが、MetalLB公式のマニフェストのリソースが全てCreated
になった後、IPAddressPoolのリソースだけが
error: resource mapping not found for name: "default" namespace: "metallb-system" from "./metallb/ipaddresspool.yaml": no matches for kind "IPAddressPool" in version "metallb.io/v1beta1"
ensure CRDs are installed first
のエラーによって作成されませんでした😢
原因
わかりませんでした(解決はしたので詳細は後述)
「ensure CRDs are installed first(CRDを先にインストールしろよ)」などと言われている割には、kubectl get crds
でカスタムリソース定義を確認すればIPAddressPoolは既にインストール済みですし、どん詰まりでした。
解決方法
kubectl apply
の後、10分ほど待ってから再度kubectl apply
を試してみたところ、今度はエラーが出ずIpAddressPoolを作成することができました。
よくわからない・・・(詳細をご存じの方はTwitterでもこちらの記事のコメントでも、ご連絡いただけると嬉しいです)
Discussion