El clúster de Kubernetes instala StorageClass a través del aprovisionador externo del subdirectorio NFS
introducción básica
El clúster k8s 1.26.4 está instalado en la máquina Centos7.9 basada en Kubeadm. Instale StorageClass a través del aprovisionador externo del subdirectorio NFS (método Helm Chart) Este artículo presentará los pasos y las precauciones pertinentes. El aprovisionador externo del subdirectorio NFS declara oficialmente que este método es adecuado para Kubernetes >=1.9
Introducción al entorno
nombre de la máquina | ip | versión del sistema | núcleo del sistema | arquitectura de la CPU |
---|---|---|---|---|
m1 | 10.11.81.152 | CentOS Linux versión 7.9 | 5.4.242-1.el7 | x86 |
w1 | 10.11.81.153 | CentOS Linux versión 7.9 | 5.4.242-1.el7 | x86 |
w2 | 10.11.81.154 | CentOS Linux versión 7.9 | 5.4.242-1.el7 | x86 |
w3 | 10.11.81.155 | CentOS Linux versión 7.9 | 5.4.242-1.el7 | x86 |
nfs | 10.11.82.6 | CentOS Linux versión 7.9 | 3.10.0-1160.90.1 | x86 |
1. Instale el servidor NFS (opere en la máquina nfs)
1.1 Instalar los paquetes de software requeridos por el servidor NFS
yum install -y nfs-utils
1.2 Configure el servicio NFS para que se inicie en el arranque (el servicio rpcbind debe iniciarse primero)
systemctl enable rpcbind
systemctl enable nfs
1.3 Iniciar servicio nfs
systemctl start rpcbind
systemctl start nfs
1.4 Si hay un servicio de firewall, debe abrir los servicios rpc-bind y nfs
firewall-cmd --zone=public --permanent --add-service={
rpc-bind,mountd,nfs}
firewall-cmd --reload
2. Configurar directorio compartido (operación en máquina nfs)
2.1 Después de iniciar el servicio NFS, configure un directorio compartido en el lado del servidor
mkdir /nfs-share
2.2 Configurar el directorio compartido por el servidor NFS
echo "/nfs-share 10.11.81.0/24(rw,sync,no_root_squash,no_all_squash) > /etc/exports
a./nfs-share: Ubicación del directorio compartido
b.10.11.81.0/24: Rango de IP del cliente, * significa todo, es decir, sin límite. Si se trata de un entorno de producción, se recomienda controlar estrictamente la IP accesible
c.rw: configuración de permisos, lectura y escritura
d.sync: sincronización del directorio compartido
e.no_root_squash: se puede utilizar la autorización de root
f.no_all_squash: autorización de usuario normal
2.3 se puede usar para que la configuración de NFS surta efecto
exportfs -r
2.4 Comprobar el estado del montaje
exportfs
3. Instalar Helm Chart (operar en la máquina m1)
Sitio web oficial
3.1 Si no consulta el sitio web oficial, ejecute directamente el siguiente comando para instalar Helm Chart
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
#测试是否安装成功
helm version
4. Instale nfs-utils en todos los nodos de trabajo (opere en w* nodes)
Se encontró un error: consulte el artículo
Si no se realiza este paso, se producirá el siguiente error al iniciar nfs-installing el contenedor nfs-provisioner en el paso 5 "Instalar nfs-provisioner":
mount: wrong fs type, bad option, bad superblock on 125.64.41.244:/data/img,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
Busqué en Internet y dije que fue causado por no instalar mount.nfs. También significa que mount.nfs debe instalarse en el nodo de trabajo de nfs para que no haya un tipo de fs incorrecto, una opción incorrecta, un error de superbloque incorrecto. avisos
De acuerdo con el mensaje de error, verifique el archivo /sbin/mount., y se encuentra que no hay ningún archivo /sbin/mount.nfs, simplemente instale nfs-utils.
#所有工作节点执行
yum install nfs-utils -y
5. Instalar nfs-provisioner (operar en la máquina m1)
Referencia del sitio web oficial
#添加repo
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=10.11.82.6 \ #nfs服务提供方机器
--set nfs.path=/nfs-share \ #nfs服务提供方目录
--set storageClass.name=nfs-client \ #Storage Class名称
--set storageClass.defaultClass=true #设置为默认Storage Class
Nota: La imagen nfs-subdir-external-provisioner instalada de manera predeterminada proviene de registration.k8s.io. Las descargas nacionales pueden ser limitadas. Puede descargar imágenes relacionadas desde la siguiente dirección:
https://download.csdn.net/download/ weixin_46660849/87822652
#配置时可以指定镜像仓库
--set image.repository=<可以下载nfs-subdir-external-provisioner的本地或远程镜像仓库>
6. Verificación de prueba (operación en máquina m1)
6.1 Asegúrese de que el contenedor nfs-provisioner se inicie correctamente
#添加repo
kubectl get po
#看到如下输出
NAME READY STATUS RESTARTS AGE
nfs-subdir-external-provisioner-456ed7c90-acjn1 1/1 Running 0 2m
6.2 Verificar que el pvc cuelgue
cat <<EOF > pvc-test.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-test
spec:
storageClassName: "nfs-client"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Mi
EOF