近日kubernetes v1.14.0正式发布了,这个版本带来的一个新特性就是本地持久化管理( Local StorageManagement)特性正式GA(稳定)了。
Local存储最早是在1.7版本引入的,最早是为了替换hostPath volume。
由于Local Storage目前还不支持动态分配使用,本文主要介绍Local Storage的静态使用方式。
集群部署
在开始之前,我们先需要部署一套Kubernetes集群环境。这里使用Nebulogy平台部署程序,帮助我们快速部署最新的v1.14.0集群。
手动-静态使用
集群环境准备好之后,我们就可以开始使用Local Storage了。在开始之前我们先下载好示例代码文件。
下载示例文件
git clonehttps://github.com/lusyoe/k8s-local-storage.git
进入static子目录,示例文件介绍:
1. default_example_storageclass.yamllocal-storage的storageclass定义,通过该文件,可以延迟绑定pv-pvc,只有当消费PVC时,才去绑定PV;
2. manual-pv.yaml
local-storage定义声明,标识使用的本地目录,并且运行所在的节点;
3. simple-pvc.yaml
消费PV的PVC,通过该文件可以提供给Pod消费,也可以绑定Local PV。
在部署之前,我们还需要到指定的运行节点上面去创建本地目录,否则POD将会启动失败,提示以下错误:
MountVolume.NewMounter initialization failed for volume "example-local-pv":
path "/mnt/disks/ssd1" does not exist
示例部署
修改完pv配置,并且提前创建到local目录,就可以开始部署了。执行以下命令完成部署:
kubectl apply -f static/
最后到指定节点的对应目录上,查看是否生成了SUCCESS文件,文件内容应该为:hello k8s localstorage。
延迟绑定测试
通过上面步骤,我们直接就完成了所有的部署,但是并没有看到延迟绑定的过程,我们这次可以一步步的部署,查看是否有延迟绑定。
清理部署
我们先清理掉先前部署的Local Storage:
kubectl delete -f static/
部署StorageClass
必须要先部署StorageClass,通过其中的
volumeBindingMode:WaitForFirstConsumer来实现PVC的延迟绑定。
使得PV Controller并不会立刻为PVC做Bound,而是等待某个需要使用该local pv的Pod完成调度后,才去做Bound。
kubectl apply -f static/
default_example_storageclass.yaml
部署PV
部署Local Storage,声明使用的本地存储路径和运行的节点,并且指定Local StorageClass。
kubectl apply -f static/manual-pv.yaml
部署PVC
现在再来部署PVC,查看PVC是否会出现延迟绑定:
kubectl apply -f static/simple-pvc.yaml
通过上图,可以看到,现在PVC确实是处于Pending状态,我们最后再部署Pod,测试PVC是否在Pod调度完成,运行时,开始绑定的。
部署Pod
测试Pod中消费了PVC,PVC在被消费的时候就会去绑定消费PV了。
kubectl apply -f static/pod-example.yaml
这里使用的Local Storage还比较简单,但是也看出来跟hostPath的区别了,一是延迟消费,二是自动调度漂移到PV申明的节点上去了,无需我们再在Pod中指定了。
但是也看出了,Local Storage的使用还是稍显麻烦,每次都要去手动创建PV、创建本地路径。那是否有更方便的方式呢?
肯定是有的,
下一篇将会介绍Local StorageProvisioner,帮助我们自动创建PV并维护生命周期。
相关阅读
云服务平台的架构及优势
[新型容器+Kubernetes]GPDB on PKS:容器化的MPP数据库
戳“