J'exécute un déploiement MySQL sur Kubernetes mais il semble que mon espace alloué n'était pas suffisant, au début j'ai ajouté un volume persistant de 50GB
et maintenant j'aimerais étendre cela à 100GB
.
J'ai déjà vu qu'une revendication de volume persistant est immuable après la création, mais puis-je simplement redimensionner le volume persistant, puis recréer ma revendication?
Oui, à partir du 1.11, les volumes persistants peuvent être redimensionnés sur certains fournisseurs de cloud. Pour augmenter la taille du volume:
PVC
à l'aide de kubectl edit pvc $your_pvc
Une fois le pod utilisant le volume terminé, le système de fichiers est développé et la taille du PV
est augmentée. Voir le lien ci-dessus pour plus de détails.
Il est possible dans Kubernetes 1.9 (alpha en 1.8) pour certains types de volume: gcePersistentDisk, awsElasticBlockStore, Cinder, glusterfs, rbd
Cela nécessite d'activer le plug-in d'admission PersistentVolumeClaimResize
et les classes de stockage dont le champ allowVolumeExpansion
est défini sur true.
Voir les documents officiels sur https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims
Non, Kubernetes ne prend pas encore en charge le redimensionnement automatique du volume.
Le redimensionnement du disque est actuellement un processus entièrement manuel.
En supposant que vous avez créé un objet PV Kubernetes avec une capacité donnée et que le PV est lié à un PVC, puis attaché/monté à un nœud pour être utilisé par un pod. Si vous augmentez la taille du volume, les pods continueront à pouvoir utiliser le disque sans problème, mais ils n'auront pas accès à l'espace supplémentaire.
Pour activer l'espace supplémentaire sur le volume, vous devez redimensionner manuellement les partitions. Vous pouvez le faire en suivant les instructions ici . Vous devez d'abord supprimer les modules référençant le volume, attendre qu'il se détache, puis attacher/monter manuellement le volume à une instance VM à laquelle vous avez accès et exécuter les étapes requises). pour le redimensionner.
Problème ouvert # 35941 pour suivre la demande de fonctionnalité.
Il existe ne certaine prise en charge pour cela dans la version 1.8 et supérieure, pour certains types de volume, y compris gcePersistentDisk
et awsBlockStore
, si certaines fonctionnalités expérimentales sont activées sur le cluster.
Pour les autres types de volume, cela doit être fait manuellement pour l'instant. De plus, le support pour le faire automatiquement lorsque les pods sont en ligne (Nice!) Arrive dans une future version (actuellement prévue pour 1.11) :
Pour l'instant, voici les étapes que j'ai suivies pour le faire manuellement avec un type de volume AzureDisk
(pour les disques gérés) qui ne prend actuellement pas en charge le redimensionnement persistant du disque (mais le support arrive également =):
Bound
. Faites particulièrement attention aux ensembles avec état gérés par un opérateur, tel que Prometheus - il peut être nécessaire de désactiver temporairement l'opérateur. Il peut également être possible d'utiliser Scale
pour effectuer un pod à la fois. Cela peut prendre quelques minutes, soyez patient.e2fsck
et resize2fs
pour redimensionner le système de fichiers sur le PV (en supposant un FS ext3/4). Démontez les disques.Released
.Available
: spec.capacity.storage
,spec.claimref
uid
et resourceVersion
, etstatus.phase
.metadata.resourceVersion
champ,pv.kubernetes.io/bind-completed
et pv.kubernetes.io/bound-by-controller
annotations, etspec.resources.requests.storage
champ à la taille PV mise à jour, etstatus
.Pending
, mais le PV et le PVC doivent passer relativement rapidement à Bound
.En termes de `` redimensionnement '' PVC/PV, ce n'est toujours pas pris en charge dans les k8, bien que je pense qu'il pourrait potentiellement arriver en 1.9
Il est possible d'obtenir le même résultat final en traitant avec PVC/PV et (par exemple) GCE PD cependant ..
Par exemple, j'avais un déploiement gitlab, avec un PVC et un PV provisionné dynamiquement via une ressource StorageClass. Voici les étapes que j'ai parcourues:
kubectl describe pv <name-of-pv>
(utile lors de la création du manifeste PV ultérieurement)"gcePersistentDisk: pdName: <name-of-pd>"
défini, ainsi que d'autres détails que j'avais saisis à l'étape 3. assurez-vous de mettre à jour le spec.capacity.storage à la nouvelle capacité que vous voulez que le PV ait (bien que ce ne soit pas essentiel, et n'a aucun effet ici, vous pouvez mettre à jour la capacité/valeur de stockage dans votre manifeste PVC, pour la postérité)kubectl apply
(ou équivalent) pour recréer votre déploiement/pod, PVC et PVremarque: certaines étapes peuvent ne pas être essentielles, telles que la suppression de certaines ressources de déploiement/pod existantes, bien que je préfère personnellement les supprimer, car je sais que ReclaimPolicy est Retain et j'ai un instantané.