![Addon nfs wurde in keinem Repository gefunden microk8s](https://rvso.com/image/1072876/Addon%20nfs%20wurde%20in%20keinem%20Repository%20gefunden%20microk8s.png)
Ich habe einen Microk8s-Cluster mit 3 Knoten, der im Multipass-Modus auf Ubuntu 22.04 läuft. Alles läuft auf meinem alten Macbookpro Mitte 2012. (mit Ubuntu 22.04 habe ich Macos entfernt)
Ich erhalte diese Meldung, wenn ich den Befehl ausführe:
microk8s enable nfs
Addon nfs was not found in any repository
Ich habe NFS auf allen drei Multipass-Instanzen installiert.
sudo apt install -y nfs-common
DNS aktiviert, Dashboard aktiviert. Ich kann von meinem Host Ubuntu aus auf den Cluster zugreifen.
kubectl get node
NAME STATUS ROLES AGE VERSION
worker01 Ready <none> 40m v1.24.8-2+1dda18a15eea38
master Ready <none> 46m v1.24.8-2+1dda18a15eea38
worker02 Ready <none> 42m v1.24.8-2+1dda18a15eea38
Folgende Pods laufen
kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-node-hv6sd 1/1 Running 0 84m
kube-system calico-node-wbm9h 1/1 Running 0 82m
kube-system coredns-66bcf65bb8-s7xjx 1/1 Running 0 40m
kube-system calico-node-cwfzt 1/1 Running 1 (60m ago) 84m
kube-system calico-kube-controllers-655d5f4c66-d7q8q 1/1 Running 0 87m
ingress nginx-ingress-microk8s-controller-2fgwk 1/1 Running 0 38m
kube-system metrics-server-5f8f64cb86-p4tcn 1/1 Running 0 36m
kube-system dashboard-metrics-scraper-6b6f796c8d-vp4j5 1/1 Running 0 35m
ingress nginx-ingress-microk8s-controller-7vjgh 1/1 Running 0 38m
ingress nginx-ingress-microk8s-controller-qzwsj 1/1 Running 0 38m
kube-system kubernetes-dashboard-765646474b-s89wj 1/1 Running 0 35m
Führen Sie auch aus
microk8s enable community
Die Meldung ist immer die gleiche. Addon nfs wurde in keinem Repository gefunden
ubuntu@master:~$ microk8s enable community
Infer repository core for addon community
Addon core/community is already enabled
ubuntu@master:~$ microk8s enable nfs
Addon nfs was not found in any repository
Antwort1
Das NFS-Addon ist ziemlich neu. Ich hatte das gleiche Problem mit Microk8s 1.24.0, es war nicht Teil der Liste. Ich habe meine Knoten auf 1.26.0 aktualisiert, musste dann das Community-Addon deaktivieren und wieder aktivieren, und es wurde in der Liste angezeigt.
Antwort2
Zunächst einmal glaube ich, dass es keine nfs
Module gibt microk8s
. Auf meinem Ubuntu 22.04.1-Server sind die verfügbaren Module unten aufgeführt:
$ microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
addons:
enabled:
dashboard # (core) The Kubernetes dashboard
dns # (core) CoreDNS
ha-cluster # (core) Configure high availability on the current node
helm # (core) Helm - the package manager for Kubernetes
helm3 # (core) Helm 3 - the package manager for Kubernetes
ingress # (core) Ingress controller for external access
metrics-server # (core) K8s Metrics Server for API access to service metrics
rbac # (core) Role-Based Access Control for authorisation
disabled:
cert-manager # (core) Cloud native certificate management
community # (core) The community addons repository
gpu # (core) Automatic enablement of Nvidia CUDA
host-access # (core) Allow Pods connecting to Host services smoothly
hostpath-storage # (core) Storage class; allocates storage from host directory
kube-ovn # (core) An advanced network fabric for Kubernetes
mayastor # (core) OpenEBS MayaStor
metallb # (core) Loadbalancer for your Kubernetes cluster
observability # (core) A lightweight observability stack for logs, traces and metrics
prometheus # (core) Prometheus operator for monitoring and logging
registry # (core) Private image registry exposed on localhost:32000
storage # (core) Alias to hostpath-storage add-on, deprecated
Für die NFS-Implementierung müssen Sie einen NFS-Server konfigurieren und einen Speichertreiber im Cluster erstellen.
Anforderungen
Sie sollten bereits über einen NFS-Server außerhalb des Clusters verfügen. Sie können die Hosts verwenden oder eine andere VM erstellen und den NFS-Server mit der folgenden Konfiguration konfigurieren:
# Assuming you use Ubuntu VM
# Install the NFS Kernel
sudo apt-get install nfs-kernel-server
# Create a directory to be used for NFS
sudo mkdir -p /srv/nfs
sudo chown nobody:nogroup /srv/nfs
sudo chmod 0777 /srv/nfs
Bearbeiten Sie dann die /etc/exports
Datei. Stellen Sie sicher, dass die IP-Adressen aller Ihrer MicroK8s-Knoten diese Freigabe mounten können. So lassen Sie beispielsweise alle IP-Adressen im 10.0.0.0/24
Subnetz zu:
sudo mv /etc/exports /etc/exports.bak
echo '/srv/nfs 10.0.0.0/24(rw,sync,no_subtree_check)' | sudo tee /etc/exports
Starten Sie abschließend den NFS-Server neu:
sudo systemctl restart nfs-kernel-server
Bitte passen Sie es an Ihre Konfiguration an.
Installationsmethode auf Clustern:
- Installieren Sie den CSI-Treiber für NFS
Wir verwenden dieUpstream-NFS-CSI-Treiber. Zuerst stellen wir den NFS-Provisioner mithilfe des offiziellen Helm-Diagramms bereit.
Aktivieren Sie das Helm3-Add-on (falls es nicht bereits aktiviert ist) und fügen Sie das Repository für den NFS-CSI-Treiber hinzu:
microk8s enable helm3
microk8s helm3 repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
microk8s helm3 repo update
Installieren Sie dann das Helm-Diagramm unter dem kube-system
Namespace mit:
microk8s helm3 install csi-driver-nfs csi-driver-nfs/csi-driver-nfs \
--namespace kube-system \
--set kubeletDir=/var/snap/microk8s/common/var/lib/kubelet
Warten Sie nach der Bereitstellung des Helm-Diagramms mit dem folgenden Befehl, bis der CSI-Controller und die Knoten-Pods angezeigt werden kubectl
…
microk8s kubectl wait pod --selector app.kubernetes.io/name=csi-driver-nfs --for condition=ready --namespace kube-system
… das bei Erfolg eine Ausgabe ähnlich der folgenden erzeugt:
pod/csi-nfs-controller-7bd5678cbc-nc6l2 condition met
pod/csi-nfs-node-lsn6n condition met
An diesem Punkt sollten Sie auch in der Lage sein, die verfügbaren CSI-Treiber in Ihrem Kubernetes-Cluster aufzulisten …
microk8s kubectl get csidrivers
… und siehe nfs.csi.k8s.io in der Liste:
NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE
nfs.csi.k8s.io false false false <unset> false Persistent 23h
- Erstellen einer StorageClass für NFS
Als Nächstes müssen wir eine Kubernetes-Speicherklasse erstellen, die den nfs.csi.k8s.io
CSI-Treiber verwendet. Vorausgesetzt, Sie haben eine NFS-Freigabe konfiguriert /srv/nfs
und die Adresse Ihres NFS-Servers lautet 10.0.0.1
, erstellen Sie die folgende Datei:
# sc-nfs.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
server: 10.0.0.1
share: /srv/nfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- hard
- nfsvers=4.1
Hinweis: Die letzte Zeile des obigen YAML gibt eine bestimmte Version von NFS an. Diese sollte mit der Version des verwendeten NFS-Servers übereinstimmen. Wenn Sie einen vorhandenen Dienst verwenden, überprüfen Sie bitte, welche Version dieser verwendet, und passen Sie sie entsprechend an.
Wenden Sie es dann auf Ihrem MicroK8s
Cluster an mit:
microk8s kubectl apply -f - < sc-nfs.yaml
- Erstellen Sie ein neues PVC
Der letzte Schritt besteht darin, einen neuen PersistentVolumeClaim mit der Speicherklasse nfs-csi zu erstellen. Dies ist ganz einfach, indem Sie storageClassName: nfs-csi
beispielsweise in der PVC-Definition Folgendes angeben:
# pvc-nfs.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
storageClassName: nfs-csi
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 5Gi
Erstellen Sie dann das PVC mit:
microk8s kubectl apply -f - < pvc-nfs.yaml
Wenn alles richtig konfiguriert wurde, sollten Sie das PVC überprüfen können…
microk8s kubectl describe pvc/test-pvc
… und sehen Sie, dass ein Volume erfolgreich bereitgestellt wurde:
Name: test-pvc
Namespace: default
StorageClass: nfs-csi
Status: Bound
Volume: pvc-0d7e0c27-a6d6-4b64-9451-3209f98d6472
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: nfs.csi.k8s.io
volume.kubernetes.io/storage-provisioner: nfs.csi.k8s.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 5Gi
Access Modes: RWO
VolumeMode: Filesystem
Used By: <none>
Events: <none>
Das ist alles! Sie können diesen PVC jetzt verwenden, um zustandsbehaftete Workloads auf Ihrem MicroK8s-Cluster auszuführen.
Sie müssen lediglich Punkt 3 neu erstellen, um neues PVC zu erstellen.