而在企业级环境中,VMware vSphere提供的虚拟化解决方案依然占据重要地位
为了将两者紧密结合,VMware推出了Container Storage Interface(CSI)插件,使得Kubernetes能够高效管理VMware存储资源
本文将详细介绍如何在VMware环境中开启并配置CSI接口,以实现在Kubernetes集群中对VMware存储的灵活使用
一、VMware CSI接口简介 Container Storage Interface(CSI)是一个为容器编排器(如Kubernetes)设计的规范,旨在实现持久化存储卷管理
该规范允许存储系统与运行在Kubernetes上的容器化工作负载进行集成
通过使用CSI,存储提供商(如VMware)可以编写和部署针对Kubernetes存储系统的插件,而无需修改Kubernetes核心代码
CSI允许将卷插件作为Kubernetes集群的扩展进行安装
二、准备工作 在正式开启并配置VMware CSI接口之前,需要进行一系列准备工作,确保环境满足要求
1.确认Kubernetes集群: - 确保已在VMware vSphere的虚拟机上构建了Kubernetes集群
- 集群应能够正常访问vCenter Server
2.开启K8S节点VM的diskUUID: - 在VMware虚拟机设置中,确保磁盘UUID已启用,以便Kubernetes能够识别和管理存储卷
3.下载镜像并推送到内部harbor: - 根据VMware提供的文档,下载所需的CSI插件镜像,并将其推送到Kubernetes集群内部的镜像仓库(如Harbor)中
4.K8S节点的污点(Taint)标记: - 根据需要,为Kubernetes节点添加污点,以防止某些Pod被调度到这些节点上
三、安装CPI(Cloud Provider Interface) 在安装CSI之前,通常需要先安装CPI,因为它为Kubernetes提供了关于其部署基础设施的详细信息
1.创建vCenter的登录secret: - 使用Kubernetes的Secret资源,存储vCenter的登录凭据
yaml
apiVersion: v1
kind: Secret
metadata:
name: vsphere-cloud-provider-secret
namespace: kube-system
type: Opaque
data:
user:
3.安装CPI:
- 根据VMware提供的CPI安装指南,在Kubernetes集群中部署CPI组件
四、安装CSI
在CPI安装完成后,接下来是安装CSI插件的步骤
1.创建vCenter的登录secret(如果CPI和CSI使用不同的凭据):
- 与CPI步骤类似,创建用于CSI插件登录vCenter的Secret资源
2.安装CSI插件:
- 根据VMware官方文档,下载CSI插件的YAML配置文件,并在Kubernetes集群中部署
- 部署过程通常包括安装csi-provisioner、csi-attacher、csi-node-driver-registrar等组件
五、配置存储挂载
在安装完CPI和CSI插件后,接下来是配置存储挂载的步骤
1.创建StorageClass:
- StorageClass是Kubernetes中用于描述存储卷的类别和属性的资源
- 根据VMware提供的示例,创建一个包含CSI插件信息的StorageClass
yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: vmware-csi-sc
provisioner: csi.vmware.com
parameters:
storagePolicyName:
- 在PVC中指定所需的存储类别(即之前创建的StorageClass)
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: vmware-csi-sc
3.部署应用程序并挂载存储:
- 在Kubernetes集群中创建一个Deployment,并在Pod的volumeMounts字段中指定PVC
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
spec:
replicas: 1
selector:
matchLabels:
app: example-app
template:
metadata:
labels:
app: example-app
spec:
containers:
- name: example-app
image: nginx:latest
volumeMounts:
- name: vol1
mountPath: /usr/share/nginx/html
volumes:
- name: vol1
persistentVolumeClaim:
claimName: example-pvc
六、验证存储功能
最后,验证存储功能是否正常
1.检查Pod状态:
-使用`kubectl getpods`命令检查应用程序Pod的状态,确保Pod已成功运行
2.验证存储挂载:
- 进入Pod内部,检查挂载的存储路径
- 在存储路径下创建、读取和删除文件,确保存储功能正常工作
七、总结
通过本文的介绍,我们详细了解了如何在VMware环境中开启并配置CSI接口,以实现在Kubernetes集群中对VMware存储的灵活使用 从准备工作到CPI和CSI的安装,再到存储挂载和验证,每一步都至关重要 希望本文能够帮助读者顺利完成VMware CSI接口的配置,为容器化应用提供高效、可靠的存储解决方案