Defalut Storage Class 管理 vSphere 7 with k8s
vSphere Pod Service defalut Storage Class 配置
通过此配置,可以在带有Kubernetes环境的vSphere 7中成功创建持久卷(PV)并通过持久卷声明(PVC)附加它们。
简要介绍一下什么是Cloud Native Storage。Cloud Native Storage是为状态应用程序提供全面数据管理的解决方案。
使用 Cloud Native Storage时,您可以创建能够在重启和中断中幸存的容器化状态应用程序。有状态的容器利用vSphere提供的存储空间,同时使用诸如标准卷,持久卷和动态配置之类的原语。
使用 Cloud Native Storage,您可以创建独立于虚拟机和容器生命周期的持久性容器卷。vSphere存储支持卷,您可以直接在卷上设置存储策略。创建卷后,可以在vSphere Client中查看它们及其支持的虚拟磁盘 ,并监视其存储策略合规性。
在我的环境中进行更改之前,所有有状态的Pod以前都一直处于“待处理”状态。
Pod describe命令将显示错误。
ExternalProvisioning – persistentvolume-controller waiting for a volume to be created either by external provisioner “csi.vsphere.vmware.com” or manually created by system administrator. |
供您参考,错误消息中上面的“ projectpacpolicy”参考是我的环境中的存储策略,并已启用基于标记的放置规则。
在带有Kubernetes环境的vSphere7中创建“命名空间”时,我们将必须提供存储策略。这是命名空间中存储策略的外观。
这是访问API服务器时获得存储类信息的通常的存储类外观。
现在,我们将看到如何将此存储类更改为“默认”
PS注意:我无法通过以[email protected]用户身份登录kubectl来更改默认存储类。
因此,我必须以root用户身份登录“ Supervisor Master”,以更改默认存储类。
要登录Supervisor Master,请登录vcenter。
- SSH进入vCenter并启用外壳
- 运行/usr/lib/vmware-wcp/decryptK8Pwd.py以获取IP地址和root密码
一旦运行上述命令,您将获得您的Supervisor Master的IP和登录密码。
接下来,以SSH身份作为root进入超级管理员主机。
进入Supervisor主服务器后,您可以按以下方式运行“ Kubectl修补程序存储类”以启用“默认”存储类。
确保替换存储类的名称。通过’kubectl get sc’获取存储类名称
成功执行上述过程后,您会注意到存储类已修补为“默认”。
此外,我描述了存储类以获取更多详细信息。
现在,我为PostgreSQL DB容器创建一个有状态容器的部署。
注意,为有状态PostgreSQL容器创建了一个PVC。
看看带有PVC的PostgreSQL pod上的事件。
可以从vCenter以及Cloud Native Storage的一部分中看到PVC。
Tanzu Kubernetes Cluster defalut Storage Class 配置
Tanzu Kubernetes群集 defalut Storage Class 消失
当我通过kubeapps部署kubernetes资源时,我遇到了一个问题,即我传递给集群的默认存储类没有持久性。为了尝试解决该问题,我从Tanzu Kubernetes集群中传递了以下内容,但并没有保留下来;
kubectl patch storageclass gold -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' |
https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/
我标记了它,因为我不确定这是否是TKG Cluster的预期行为,并指向以下文档。突出显示了YAML中有一个可配置字段,用于在spec.storage下设置名为defaultClass的TKG。
如果像我一样,您只部署了具有最小化部署YAML TKG ,则集群中不存在此配置。
因此,对于像我这样spec.settings.storage.defaultClass
在构建时未设置的任何人,都可以在部署后对其进行编辑。
使用“ kubectl-vsphere”连接到vSPhere主管群集,并将上下文切换到TKG上下文“ kubectl config use-context [tkg-context]”
编辑组件Kubernetes集群资源;
kubectl编辑tanzukubernetescluster / tkgclustername
这将打开一个文本编辑器(如图vi所示);
在规范和设置下,我添加了一个存储区(设置为“ defaultClass”标志)(“ i”插入vi的“ esc”以停止插入文本)。保存文件并退出(’:wq!’)。注销vSphere Supervisor群集(’kubectl-vsphere’)并进入Tanzu Kubernetes群集。
现在,用TKG查询SC应该将SC列为默认值。
成功!
我遇到了这个问题,试图通过Helm和Kubeapps部署资源–除非手动指定,否则某些图表似乎会引用“ defaultClass”。设置defaultStorage类对我来说都解决了这些问题。
Reference
https://virtual-simon.co.uk/tanzu-kubernetes-cluster-default-storage-class-not-persisting/
Tanzu cluster generate template :
Tanzu cluster virtual machine class types (size ) :