![El complemento nfs no se encontró en ningún repositorio microk8s](https://rvso.com/image/1072876/El%20complemento%20nfs%20no%20se%20encontr%C3%B3%20en%20ning%C3%BAn%20repositorio%20microk8s.png)
Tengo un clúster microk8s con 3 nodos, ejecutándose en multipaso en Ubuntu 22.04. Todo funcionando en mi antiguo Macbookpro de mediados de 2012. (con ubuntu, 22.04 eliminé Macos)
Recibo este mensaje cuando ejecuto el comando:
microk8s enable nfs
Addon nfs was not found in any repository
Instalé nfs en las 3 instancias multipaso.
sudo apt install -y nfs-common
dns habilitado tablero habilitado Puedo acceder al clúster desde mi host ubuntu.
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
Los siguientes pods están funcionando.
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
Ejecutar también
microk8s enable community
El mensaje es siempre el mismo. El complemento nfs no se encontró en ningún repositorio
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
Respuesta1
El complemento nfs es bastante nuevo. Tuve el mismo problema con microk8s 1.24.0, no formaba parte de la lista. Actualicé mis nodos a 1.26.0, luego tuve que deshabilitar y volver a habilitar el complemento de la comunidad y apareció en la lista.
Respuesta2
En primer lugar, creo que no hay nfs
módulos en microk8s
. En mi servidor Ubuntu 22.04.1, los módulos disponibles se enumeran a continuación:
$ 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
Para la implementación de NFS, debe tener configurado el servidor NFS y crear un controlador de almacenamiento en el clúster.
Requisitos
Ya debería tener un servidor NFS fuera de los clústeres, puede usar los hosts o generar otra VM y configurar el servidor NFS con la siguiente configuración:
# 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
Luego edite el /etc/exports
archivo. Asegúrese de que las direcciones IP de todos sus nodos MicroK8s puedan montar este recurso compartido. Por ejemplo, para permitir todas las direcciones IP en la 10.0.0.0/24
subred:
sudo mv /etc/exports /etc/exports.bak
echo '/srv/nfs 10.0.0.0/24(rw,sync,no_subtree_check)' | sudo tee /etc/exports
Finalmente, reinicie el servidor NFS:
sudo systemctl restart nfs-kernel-server
Por favor ajuste con su configuración.
Método de instalación en clústeres:
- Instale el controlador CSI para NFS
Usaremos elcontrolador NFS CSI ascendente. Primero, implementaremos el aprovisionador NFS utilizando el gráfico oficial de Helm.
Habilite el complemento Helm3 (si aún no está habilitado) y agregue el repositorio para el controlador NFS CSI:
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
Luego, instale el gráfico Helm debajo del kube-system
espacio de nombres con:
microk8s helm3 install csi-driver-nfs csi-driver-nfs/csi-driver-nfs \
--namespace kube-system \
--set kubeletDir=/var/snap/microk8s/common/var/lib/kubelet
Después de implementar el gráfico Helm, espere a que aparezcan el controlador CSI y los pods de nodos usando el siguiente kubectl
comando...
microk8s kubectl wait pod --selector app.kubernetes.io/name=csi-driver-nfs --for condition=ready --namespace kube-system
… que, una vez exitoso, producirá resultados similares a:
pod/csi-nfs-controller-7bd5678cbc-nc6l2 condition met
pod/csi-nfs-node-lsn6n condition met
En este punto, también debería poder enumerar los controladores CSI disponibles en su clúster de Kubernetes...
microk8s kubectl get csidrivers
… y vea nfs.csi.k8s.io en la lista:
NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE
nfs.csi.k8s.io false false false <unset> false Persistent 23h
- Crear una StorageClass para NFS
A continuación, necesitaremos crear una clase de almacenamiento de Kubernetes que utilice el nfs.csi.k8s.io
controlador CSI. Suponiendo que haya configurado un recurso compartido NFS /srv/nfs
y que la dirección de su servidor NFS es 10.0.0.1
, cree el siguiente archivo:
# 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
Nota: La última línea del YAML anterior indica una versión específica de NFS. Esto debe coincidir con la versión del servidor NFS que se está utilizando; si está utilizando un servicio existente, verifique qué versión utiliza y ajústelo en consecuencia.
Luego aplíquelo en su MicroK8s
clúster con:
microk8s kubectl apply -f - < sc-nfs.yaml
- Crear un nuevo PVC
El último paso es crear un nuevo PersistentVolumeClaim utilizando la clase de almacenamiento nfs-csi. Esto es tan sencillo como especificar storageClassName: nfs-csi
en la definición de PVC, por ejemplo:
# pvc-nfs.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
storageClassName: nfs-csi
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 5Gi
Luego crea el PVC con:
microk8s kubectl apply -f - < pvc-nfs.yaml
Si todo se ha configurado correctamente, deberías poder comprobar el PVC...
microk8s kubectl describe pvc/test-pvc
… y ver que un volumen se aprovisionó correctamente:
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>
¡Eso es todo! Ahora puede usar este PVC para ejecutar cargas de trabajo con estado en su clúster MicroK8s.
Sólo necesitas recrear el punto 3 para crear un nuevo PVC.