在 VMware vSphere 中构建 Kubernetes 存储环境

这篇具有很好参考价值的文章主要介绍了在 VMware vSphere 中构建 Kubernetes 存储环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:马伟,青云科技容器顾问,云原生爱好者,目前专注于云原生技术,云原生领域技术栈涉及 Kubernetes、KubeSphere、kubekey等。

相信很多小伙伴和企业在构建容器集群时都会考虑存储选型问题,不论是块存储 / 文件存储 / 对象存储的选择,亦或是一体机 / 裸机+外置存储 / 虚拟化+存储的纠结,都是在规划容器集群时的顾虑。对于原先就有虚拟化环境的用户来说,我能否直接搭建容器集群在虚拟化环境中,并直接使用现有的存储用于容器呢?本文将以 VMware vSphere CNS+KubeSphere 为工具在虚拟化环境搭建容器及存储环境。

vSphere CNS

VMware vSphere Cloud Native Storage(CNS)是 VMware 结合 vSphere 和 K8s 提供容器卷管理的组件。K8s 存储有 in tree 和 out of tree 两种存储类型,in tree 存储如 AWS EBS,Ceph RBD 等。是 VMware in tree 存储 VCP 演进到 out of tree 存储提供的符合 CSI 插件规范的容器存储。它由两部分构成:

  • vCenter 的 CNS 控制平台。vCenter 调度底层虚拟化结合的存储平台创建容器存储卷。
  • K8s 的 CSI 存储插件。对 vCenter 创建的卷进行附加 / 分离 / 挂载等操作。

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

结合上面这张官方提供的图,可以理解为,现在我的 vSphere 虚拟化环境已经准备好了不同的存储(本地存储 /NAS/FC SAN/vSAN),我不用在乎存储是什么品牌,不需要考虑这款存储是否有厂商支持的 CSI 插件,我可以基于业务类型,将不同的存储直接挂载给我不同业务的容器使用。

这种设计模式也带来众多好处 :

  • 简便运维。想在 vSphere 虚拟化平台上运行容器的用户,不再担心怎么结合存储,不用再去纠结 Ceph 还是 GlusterFS 好用,也不用想去哪倒腾个闲置的 NFS 挂在容器集群上了。相反可以在 vSphere 上监控容器虚拟机节点和存储状态,运维方式不变,运维效率得到提升。
  • 屏蔽存储差异。不论是 NAS 存储还是集中存储,只要对接于 vSphere 存储,使用 VMFS/NFS/vSAN 协议或格式的存储,皆可提供给容器使用。
  • 基于策略的放置。基于存储策略(SPBM)的 StorageClass Provisioner 定义,管理员可在虚拟化平台定义相应的存储策略, 直接应用于 SC 中给容器使用。

容器环境搭建

在了解了基本概念后,本章开始实操演练。首先搭建一个 vSphere 虚拟化上的容器集群。为了快速搭建一个从 0 到 1 的容器集群,此处使用一款开源工具——"Kubekey"。Kubekey 是青云开源的一款快速搭建 K8s 和 KubeSphere 容器集群的工具,KubeSphere 是青云开源的 K8s PaaS 管理平台,可以帮助用户可视化统一管理所有 K8s 环境,包括 AWS EKS,华为 CCE,VMware Tanzu 等 K8s 环境纳管。Kubekey 和 KubeSphere 皆通过 CNCF 一致性认证,感兴趣的小伙伴可以在 github/gitee 查看详情。

获取 Kubekey 很简单,使用以下命令:

接下来使用一条命令快速安装一个 kubernetes 平台和 KubeSphere 平台。

🐳  → export KKZONE=cn #国内网络环境友好
🐳  → curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.1 sh -

Docker 的出现让我们可以一条命令运行一个 MySQL 应用,Kubekey 让我们一条命令运行一个完整的 K8s 集群和 KubeSphere 平台。

🐳  → kk create cluster --with-kubernetes v1.23.8 --with-kubesphere v3.3.0

若是多台节点,使用配置文件定义节点信息即可。

  hosts:
  - {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, user: ubuntu, password: Testing123}
  - {name: node1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: ubuntu, password: Testing123}
  roleGroups:
    etcd:
    - master
    control-plane:
    - master
    worker:
    - node1

在 kk create 后等待 20 分钟,K8s 和 KubeSphere 即可搭建完毕。

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

Kubekey 不仅是一个 K8s 集群创建工具,还可以轻松创建 Harbor,Addon 网络存储插件,并可基于 Manifest 的形式定义节点依赖包,镜像,工具后标准化交付,过段时间我会更新一篇 Kubekey 使用手册,可以三连关注一波。

vSphere 容器存储插件安装

第一章节提过,vSphere CNS 整体由 vCenter 的 CNS 控制面和面向 k8s 的存储插件构成。CNS 控制面已存在于 vCenter 6.7U3 及更高版本中,接下来只需要在 vSphere 虚拟机部署的 k8s 中安装 CSI 插件即可。

这里有一个准备条件,在准备 K8s 节点虚拟机时,要先设置以下参数:

  • 安装 VMTools;
  • 配置虚拟机高级参数 disk.EnableUUID=TRUE;
  • 调整虚拟机硬件版本至 15 以上;
  • 添加 VMware 准 SCSI 存储控制器到 VM,使用 VMware 准虚拟类型。

安装 vSphere CSI 插件时,提前查阅官网检查对应版本的 vCenter,K8s 的兼容性。

安装 vsphere-cloud-controller-manager

对所有节点打标签

🐳  → kubectl taint node k8s node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule

下载 vsphere-cloud-controller-manager yaml 文件,

🐳  → wget https://raw.githubusercontent.com/kubernetes/cloud-provider-vsphere/release-1.23/releases/v1.23/vsphere-cloud-controller-manager.yaml

修改其中 Secret 和 Configmap 部分的 vCenter 配置:

apiVersion: v1
kind: Secret
metadata:
  name: vsphere-cloud-secret
  namespace: kube-system
stringData:
  10.0.0.1.username: "<ENTER_YOUR_VCENTER_USERNAME>"
  10.0.0.1.password: "<ENTER_YOUR_VCENTER_PASSWORD>"
apiVersion: v1
kind: ConfigMap
metadata:
  name: vsphere-cloud-config
  namespace: kube-system
data:
    vcenter:
      <your-vcenter-name-here>:
        server: 10.0.0.1
        user: <use-your-vcenter-user-here>
        password: <use-your-vcenter-password-here>
        datacenters:
          - Datacenter01

作为一个合格的 yaml 工程师,一定注意缩进。在调整完后,kubectl apply 一下:

🐳  → kubectl apply -f vsphere-con-ma.yaml
serviceaccount/cloud-controller-manager created
secret/vsphere-cloud-secret created
configmap/vsphere-cloud-config created
rolebinding.rbac.authorization.k8s.io/servicecatalog.k8s.io:apiserver-authentication-reader created
clusterrolebinding.rbac.authorization.k8s.io/system:cloud-controller-manager created
clusterrole.rbac.authorization.k8s.io/system:cloud-controller-manager created
daemonset.apps/vsphere-cloud-controller-manager created

🐳  → kubectl get pods -A | grep vsphere
kube-system                    vsphere-cloud-controller-manager-km68c           1/1     Running   0          3m4s

创建 vmware-system-csi 命名空间:

🐳  → kubectl create ns vmware-system-csi
namespace/vmware-system-csi created

创建 CSI 驱动配置文件:

🐳  → cat /etc/kubernetes/csi-vsphere.conf
[Global]
cluster-id = "<cluster-id>"#t填写集群名称

[VirtualCenter "<IP or FQDN>"] #填写vcenter信息
insecure-flag = "<true or false>"#选择false后要注明ca文件和指纹,可选择true
user = "<username>"
password = "<password>"
port = "<port>"
datacenters = "<datacenter1-path>"#选择集群节点所在的datacenter

生成 Secret:

🐳  → kubectl create secret generic vsphere-config-secret --from-file=csi-vsphere.conf --namespace=vmware-system-csi

安装 vsphere-csi-driver:

🐳  → kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/vsphere-csi-driver/v2.6.0/manifests/vanilla/vsphere-csi-driver.yaml

等待 Pod 成功运行:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

查看 csidriver 和 csinode 状态:

🐳  → kubectl get csidriver
NAME                     ATTACHREQUIRED   PODINFOONMOUNT   STORAGECAPACITY   TOKENREQUESTS   REQUIRESREPUBLISH   MODES        AGE
csi.vsphere.vmware.com   true             false            false             <unset>         false               Persistent   85m
🐳  → kubectl get CSINODE
NAME   DRIVERS   AGE
k8s    1         16h

到这里 vsphere csi driver 安装完成,可以准备底层存储和 StorageClass 置备了。

StorageClass 创建

CNS 使 vSphere 存储成为运行有状态 K8s 工作负载的平台,因此 CNS 可基于存储策略或指定挂载的 vSphere 存储(VMFS/NFS/vSAN)创建 StorageClass 进行动态持久卷置备。

创建 StorageClass:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: example-block-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "vSAN Default Storage Policy"  #使用存储策略定义
# datastoreurl: "ds:///vmfs/volumes/vsan:52cdfa80721ff516-ea1e993113acfc77/" #使用指定的数据存储定义,可以是挂载给ESXi的NFS,FC/IP SAN,本地存储等
# csi.storage.k8s.io/fstype: "ext4" #设定格式化文件类型

进入 KubeSphere,查看已经同步的存储类和快照类:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

运行有状态应用

打开 KubeSphere 容器平台的应用商店,部署一个 MySQL 应用示例,以验证 vSphere 持久卷的可行性。

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

设置对应的 StorageClass 为刚才基于 vSphere CSI 创建的 example-block-sc:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

应用创建成功,已创建并附加声明的存储卷:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

进入 vCenter,可以看到这台节点虚拟机已挂载一个 8G 的硬盘,容量和 PVC 一致,后端存储和 StorageClass 定义的一致。

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

进入 MySQL 终端,写入一些测试数据:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

这里创建一个表,插入示例值:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

对现有 PVC 创建一个快照:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

再次进入 MySQL 添加数据:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

删除现有绑定的 PVC,进入 MySQL 查看表已检索不到。

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

使用卷快照的 PVC,进入 MySQL 查看数据,为创建快照时的状态。

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

监控

vsphere-csi 提供了基于 Prometheus 的监控指标,提供 CNS 组件和容器存储的指标暴露。 在 KubeSphere 上可以通过监控导出器创建对应服务的 ServiceMontior:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

vSphere 官方提供了 Grafana 的监控模板,可直接使用:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

用户也可根据监控指标在 KubeSphere 设置基于偏好的自定义监控面板,如观察容器块存储创建成功的次数统计:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

除此之外,虚拟化管理员亦可在 vCenter 查看 CNS 监控信息:

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

wmware vsphere没有存储能搭建么,k8s,容器平台,kubesphere,云计算

首次分享就到这里了,作为一名之前从事虚拟化,现在从事云原生的工程师,不论是采用哪种基础设施环境,最终目的都是为了上层应用站在巨人的肩膀上大施拳脚,因此在不同的基础环境提供不同的解决方案,也是一名售前工程师的乐趣,感谢观看。 PS: 感谢老东家的 VMware 环境借用哈哈。 本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-824581.html

到了这里,关于在 VMware vSphere 中构建 Kubernetes 存储环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VMware vSphere运维管理手册

    适用版本:VMware vSphere 7.0 VMware vSphere 是 VMware 的虚拟化平台,可将数据中心转换为包括 CPU、存储和网络资源的聚合计算基础架构。vSphere 将这些基础架构作为一个统一的运行环境进行管理,并为您提供工具来管理加入该环境的数据中心。 ![[Pasted image 20231212132704.png]] vSphere 的两

    2024年01月24日
    浏览(47)
  • VMware vSphere 8 发布(含下载)

    昨日(2022.08.30)VMware 宣布正式发布 VMware vSphere 8。 企业工作负载平台 VMware vSphere 8 将云的优势带入本地工作负载,通过 DPU 和 GPU 提升性能,并通过企业就绪的集成 Kubernetes 运行时加速创新。让我们更详细地了解一下。 vSphere 8 通过 VMware vSphere Distributed Services Engine 向企业引入

    2024年02月03日
    浏览(37)
  • VMware vSphere(三)update management

    前面两篇我们了解了什么是vsphere,什么是ESX i,什么是vCenter,以及如何安装ESX i和vCenter,本篇将学习vSphere部署里的最后一个工具,update management update management从字面上理解就算升级管理,在vsphere中,update management担任了升级ESX i主机版本,升级相关组件,打补丁等有关软件升

    2024年02月16日
    浏览(32)
  • 【VMware vSphere 7】安装部署VCSA(五)

    安装VCSA7十分消耗内存资源。记录一下安装过程。 本地挂载此镜像。 双击打开“installer.exe” 点击“安装”。 接受许可协议,单击下一步操作。 证书警告,单击“是”。 设置vCenter虚拟机名称和ROOT密码。 选择部署大小。建议至少小型。 选择数据存储。 配置网络设置。 确认

    2024年02月02日
    浏览(34)
  • VMware vSphere ESXi系统设置静态IP

    如何修改VMware vSphere ESXi系统设置静态IP 前言:实验测试的环境中,我们为了方便管理,一般将采取静态IP配置来测试实验,接着上一篇安装好的Vmware ESXi我们来修改静态ip 1:安装F12进入Customize system 2:登录安装时设置好的账号密码 3:选择Configure Management Network,然后回车确定

    2024年02月11日
    浏览(40)
  • 【VMware vSphere 7】安装配置ESXi 7主机(二)

    ESXi专为运行虚拟机、最大限度降低配置要求和简化部署而设计。只需几分钟时间,客户便可完成从安装到运行虚拟机的全过程,特别是在下载并安装预配置虚拟设备的时候。 提高可靠性和安全性 简化部署和配置 减少管理开销 点击“开启此虚拟机” 。 等待系统加载完成。

    2024年02月11日
    浏览(43)
  • VMware vSphere 8.0 Update 2b 下载 - Broadcom VMware 首次重大更新

    VMware vSphere 8.0 Update 2b 下载 - Broadcom VMware 首次重大更新 VMware vSphere 8.0 Update 2b 下载 - 企业级工作负载平台 2 月 29 日(北京时间 3 月 1 日),VMware by Broadcom 停更 5 个月后,终于发布了首次重大更新! ESXi 8.0 U2 vCenter Server 8.0 U2 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u

    2024年03月09日
    浏览(58)
  • VMware vSphere 8.0c - 企业级工作负载平台

    ESXi 8.0.0 vCenter Server 8.0.0 GA (General Availability) 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-03-30, VMware vSphere 8.0c 发布。 2023-03-23,LENOVO Custom Image for ESXi 8.0b Install CD 发布。 2023-03-07,Dell Custom Image for ESXi 8.

    2023年04月26日
    浏览(46)
  • VMware vSphere 8.0b 发布下载 - 企业级工作负载平台

    ESXi 8.0.0b vCenter Server 8.0.0b GA (General Availability) 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 2023-02-14,vSphere 8.0b 发布,成为官方推荐下载版本,本站定制镜像相应更新。 2023-01-31,LENOVO Custom Image for ESXi 8.

    2024年01月20日
    浏览(83)
  • VMware vSphere Hypervisor (ESXi) 7.0U3g安装

    官方查询链接地址:https://www.vmware.com/resources/compatibility/search.php 这里不细说,随便搜索一下都是。 官方下载页面:https://customerconnect.vmware.com/cn/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0 3.1 进入下载页面,选择7.0; 3.2 选择Standard,选择VMware vSphere Hypervisor (ESXi) 7

    2023年04月25日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包