c2a503d184fead28ed0f9537a9516f40.png

背景

本文介绍如何使用 helm 安装 mysql ,使用本地存储的方式。

1. 安装storage

kind: StorageClass

apiVersion: storage.k8s.io/v1

metadata:

name: local-storage-mysql

provisioner: kubernetes.io/no-provisioner

volumeBindingMode: WaitForFirstConsumer

在这里起了名叫 local-storage-mysql 的 storage class。

在这里我们使用了 WaitForFirstConsumer 延迟绑定pv,直到 pod 被调度。

2. 安装pv绑定

apiVersion: v1

kind: PersistentVolume

metadata:

name: local-pv-mysql

spec:

capacity:

storage: 8Gi

# volumeMode field requires BlockVolume Alpha feature gate to be enabled.

volumeMode: Filesystem

accessModes:

- ReadWriteOnce

storageClassName: local-storage-mysql

persistentVolumeReclaimPolicy: Retain

local:

path: /app/kelu/local-storage/mysql

nodeAffinity:

required:

nodeSelectorTerms:

- matchExpressions:

- key: kubernetes.io/hostname

operator: In

values:

- keludev06

在这里我们在 keludev06 这台机器上创建了文件夹 /app/kelu/local-storage/mysql 用于持久化存储。

在这里我们必须定义 nodeAffinity,Kubernetes Scheduler 需要使用 PV 的 nodeAffinity 描述信息来保证 Pod 能够调度到有对应 local volume 的机器上。

如果出现了这个错误 Node didn't find available persistent volumes to bind ,大多原因是因为你没有写对 hsotname,

注意在 k8s 中hostname都是小写显示的,具体参考命令行 kubectl get node -owide

3. 修改 values.yaml

搜索 persistence ,填充 storage class的内容。

fb46f4290f6abd118fcc658e2a0950d5.png

4. 安装

a22365836ec48fb09a7dab2e1ff7c6e9.png

helm search mysql

helm install --name mysql -f values.yaml stable/mysql --namespace kelu

安装到 kelu 这个namespace下。

参考资料

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐