Le cluster Kubernetes installe StorageClass via l'approvisionneur externe du sous-répertoire NFS
introduction de base
Le cluster k8s 1.26.4 est installé sur la machine Centos7.9 basée sur Kubeadm. Installez StorageClass via l'approvisionneur externe du sous-répertoire NFS (méthode Helm Chart). Cet article présente les étapes et les précautions pertinentes. NFS Subdirectory External Provisioner déclare officiellement que cette méthode convient à Kubernetes >=1.9
Présentation de l'environnement
nom de la machine | IP | version du système | noyau du système | architecture du processeur |
---|---|---|---|---|
m1 | 10.11.81.152 | CentOS Linux version 7.9 | 5.4.242-1.el7 | x86 |
w1 | 10.11.81.153 | CentOS Linux version 7.9 | 5.4.242-1.el7 | x86 |
w2 | 10.11.81.154 | CentOS Linux version 7.9 | 5.4.242-1.el7 | x86 |
w3 | 10.11.81.155 | CentOS Linux version 7.9 | 5.4.242-1.el7 | x86 |
nfs | 10.11.82.6 | CentOS Linux version 7.9 | 3.10.0-1160.90.1 | x86 |
1. Installer le serveur NFS (opérer sur la machine nfs)
1.1 Installer les packages logiciels requis par le serveur NFS
yum install -y nfs-utils
1.2 Configurer le service NFS pour qu'il démarre au démarrage (le service rpcbind doit être démarré en premier)
systemctl enable rpcbind
systemctl enable nfs
1.3 Démarrer le service nfs
systemctl start rpcbind
systemctl start nfs
1.4 S'il existe un service de pare-feu, vous devez ouvrir les services rpc-bind et nfs
firewall-cmd --zone=public --permanent --add-service={
rpc-bind,mountd,nfs}
firewall-cmd --reload
2. Configurer le répertoire partagé (opération sur machine nfs)
2.1 Après le démarrage du service NFS, configurez un répertoire partagé côté serveur
mkdir /nfs-share
2.2 Configurer le répertoire partagé par le serveur NFS
echo "/nfs-share 10.11.81.0/24(rw,sync,no_root_squash,no_all_squash) > /etc/exports
a./nfs-share : emplacement du répertoire partagé
b.10.11.81.0/24 : plage d'adresses IP du client, * signifie tout, c'est-à-dire aucune limite. S'il s'agit d'un environnement de production, il est recommandé de contrôler strictement l'IP accessible
c.rw : paramètre d'autorisation, lisible et inscriptible
d.sync : synchroniser le répertoire partagé
e.no_root_squash : l'autorisation root peut être utilisée
f.no_all_squash : autorisation de l'utilisateur ordinaire
2.3 peut être utilisé pour que la configuration NFS prenne effet
exportfs -r
2.4 Vérifier l'état du montage
exportfs
3. Installer Helm Chart (fonctionner sur la machine m1)
Site officiel
3.1 Si vous ne vous référez pas au site officiel, exécutez directement la commande suivante pour installer 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. Installez nfs-utils sur tous les nœuds de travail (fonctionnez sur les nœuds w *)
Erreur rencontrée : reportez-vous à l'article
Si cette étape n'est pas effectuée, l'erreur suivante se produira lors du démarrage de l'installation de nfs du conteneur nfs-provisioner à l'étape 5 "Installer 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
J'ai cherché sur Internet et j'ai dit que cela était dû à la non-installation de mount.nfs.Cela signifie également que mount.nfs doit être installé sur le nœud de travail nfs afin qu'il n'y ait pas de mauvais type fs, mauvaise option, mauvaise erreur superbloc instructions.
Selon l'invite d'erreur, vérifiez le fichier /sbin/mount., et il s'avère qu'il n'y a pas de fichier /sbin/mount.nfs, installez simplement nfs-utils.
#所有工作节点执行
yum install nfs-utils -y
5. Installez nfs-provisioner (fonctionnez sur la machine m1)
#添加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
Remarque : L'image nfs-subdir-external-provisioner installée par défaut provient de Registry.k8s.io. Les téléchargements nationaux peuvent être limités. Vous pouvez télécharger des images associées à partir de l'adresse suivante :
https://download.csdn.net/download/ weixin_46660849/87822652
#配置时可以指定镜像仓库
--set image.repository=<可以下载nfs-subdir-external-provisioner的本地或远程镜像仓库>
6. Vérification du test (fonctionnement sur machine m1)
6.1 Assurez-vous que le conteneur nfs-provisioner démarre correctement
#添加repo
kubectl get po
#看到如下输出
NAME READY STATUS RESTARTS AGE
nfs-subdir-external-provisioner-456ed7c90-acjn1 1/1 Running 0 2m
6.2 Vérifier que le pvc s'accroche
cat <<EOF > pvc-test.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-test
spec:
storageClassName: "nfs-client"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Mi
EOF