惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
博客园_首页
IT之家
IT之家
Engineering at Meta
Engineering at Meta
量子位
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
爱范儿
爱范儿
WordPress大学
WordPress大学
F
Full Disclosure
T
Tailwind CSS Blog
GbyAI
GbyAI
Recorded Future
Recorded Future
美团技术团队
S
SegmentFault 最新的问题
A
About on SuperTechFans
小众软件
小众软件
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research
D
DataBreaches.Net
J
Java Code Geeks
The Cloudflare Blog
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
D
Docker
Vercel News
Vercel News
H
Help Net Security
博客园 - 叶小钗
B
Blog
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Register - Security
The Register - Security
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
Jina AI
Jina AI

k8s入门系列 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 metallb + ingress-nginx + argocd 本地部署 Kubernetes — k8s 手动安装 1.17.9 Argo cd 安装和部署 Kubernetes — kubecost 分析 Kubernetes 成本 Ansible部署ceph集群 Kubernetes — 更新证书 Kubernetes — Rook云存储介绍和部署 Kubernetes — 基于K8S搭建Ceph分布式存储 Kubernetes — 探针和生命周期 Kubernetes — 开放标准(OCI、CRI、CNI、CSI、SMI、CPI)概述 kubernetes 部署插件 (Flannel、Web UI、CoreDNS、Ingress Controller) kubernetes 存储 kubernetes 从1.23.x 升级到 1.24.x 编写 kubernetes 资源描述文件 kubernetes manual expansion kubernetes 调度过程 k8s本地联调神器kt-connect OpenELB:让k8s私有环境对外暴露端口 kubernetes ansible自动化部署 kubernetes 脚本快速安装 kubernetes面试题汇总 Kubernetes 安装 Harbor 搭建 Kubernetes 实验手册(1) Keepalived高可用 k3s 升级版本 helm 安装 k8s 部署loki日志 Kubernetes 创建nfs存储类 Kubernetes k8s 组件
k8s RKE2 vSphere 存储配置
2026-03-26 · via k8s入门系列 on 打工人日志

背景

在 RKE2 中配置单节点并使用 vSphere 作为底层云提供商(CPI 提供节点网络与元数据,CSI 提供存储类)是一个非常标准的生产级方案。
RKE2 内置了 rancher-vsphere-cpi 和 rancher-vsphere-csi 的 Helm Chart。你只需要在主配置文件中声明云提供商名称,并通过 HelmChartConfig 将你的 vCenter 凭证注入给这些自动部署的组件。

修改 vsphere 参数

在安装之前,你必须在 vCenter 中修改这台节点虚拟机的高级设置,否则 CSI 将无法挂载存储卷:

  1. 关闭虚拟机,右键选择 编辑设置 (Edit Settings)。
  2. 转到 虚拟机选项 (VM Options) > 高级 (Advanced) > 编辑配置 (Edit Configuration)。
  3. 添加参数:键为 disk.EnableUUID,值为 TRUE。
  4. 保存并开启虚拟机。

vsphere-1

配置 RKE2 主配置文件 (config.yaml)

首先,创建 RKE2 配置目录并编写主配置文件。这个文件告诉 RKE2 启用内置的 vSphere 插件。

1sudo mkdir -p /etc/rancher/rke2

创建 /etc/rancher/rke2/config.yaml 并写入以下内容:

1# /etc/rancher/rke2/config.yaml
2write-kubeconfig-mode: "0644"
3cloud-provider-name: "rancher-vsphere"

配置 CPI 和 CSI 的 vCenter 凭证

由于你使用了 rancher-vsphere 作为云提供商,RKE2 启动时会自动触发 Helm 部署 CPI 和 CSI。你需要提前在 manifests 目录中放置 HelmChartConfig 文件,以覆盖默认的空凭证。

1sudo mkdir -p /var/lib/rancher/rke2/server/manifests

创建 /var/lib/rancher/rke2/server/manifests/vsphere-cpi-csi.yaml,并根据你的实际环境替换 vCenter 相关信息:

 1# /var/lib/rancher/rke2/server/manifests/vsphere-cpi-csi.yaml
 2apiVersion: helm.cattle.io/v1
 3kind: HelmChartConfig
 4metadata:
 5  name: rancher-vsphere-cpi
 6  namespace: kube-system
 7spec:
 8  valuesContent: |-
 9    vCenter:
10      host: "10.0.0.10"                  # vCenter 的 IP 或 FQDN
11      port: 443
12      insecureFlag: true                  # 如果是自签证书,请保持为 true
13      datacenters: "MyDatacenter"        # vSphere 数据中心名称
14      username: "administrator@vsphere.local"
15      password: "MySecretPassword"
16    credentialsSecret:
17      generate: true    
18
19---
20apiVersion: helm.cattle.io/v1
21kind: HelmChartConfig
22metadata:
23  name: rancher-vsphere-csi
24  namespace: kube-system
25spec:
26  valuesContent: |-
27    vCenter:
28      host: "10.0.0.10"
29      datacenters: "MyDatacenter"
30      clusterId: "MyCluster"             # vSphere 集群 (Cluster) 的名称
31      username: "administrator@vsphere.local"
32      password: "MySecretPassword"
33      insecureFlag: true    

安装与启动 RKE2

配置文件就绪后,通过标准脚本安装并启动 RKE2 Server

1# 运行安装脚本
2curl -sfL https://get.rke2.io | sh -
3
4# 启动 RKE2 服务
5sudo systemctl enable --now rke2-server.service

启动过程需要几分钟。你可以通过 watch kubectl get pods -A 观察 kube-system 命名空间下 rancher-vsphere-cpirancher-vsphere-csi 相关的 Pod 是否成功处于 Running 状态。

验证与定义默认存储类 (StorageClass)

当 CSI 驱动成功运行后,你需要创建一个 StorageClass 并将其设为默认,这样集群中的工作负载就可以直接通过 PVC 动态申请 vSphere 存储。
创建一个名为 vsphere-sc.yaml 的文件:

 1# vsphere-sc.yaml
 2apiVersion: storage.k8s.io/v1
 3kind: StorageClass
 4metadata:
 5  name: vsphere-csi-sc
 6  annotations:
 7    storageclass.kubernetes.io/is-default-class: "true"
 8provisioner: csi.vsphere.vmware.com
 9# 如果你想使用特定的数据存储 (Datastore),取消下面的注释并填入 datastoreurl (格式类似于 ds:///vmfs/volumes/xxx-xxx/)
10# parameters:
11#   datastoreurl: "ds:///vmfs/volumes/YOUR-DATASTORE-ID/"
12# 如果不指定 datastoreurl,它将回退使用 vSphere SPBM (存储策略) 或集群默认存储

应用该配置:

1kubectl apply -f vsphere-sc.yaml

验证节点状态

1kubectl get node -o custom-columns=NAME:.metadata.name,ID:.spec.providerID

验证PV是否生效

建议创建一个新的 StorageClass(或者修改现有的),将你提供的数据中心路径填入 parameters 字段。
保存以下内容为 vsphere-sata-sc.yaml

 1apiVersion: storage.k8s.io/v1
 2kind: StorageClass
 3metadata:
 4  name: vsphere-sata-sc
 5  annotations:
 6    # 如果想让它成为默认存储类,取消下面这行的注释
 7    # storageclass.kubernetes.io/is-default-class: "true"
 8provisioner: csi.vsphere.vmware.com
 9reclaimPolicy: Delete
10allowVolumeExpansion: true  # 允许以后在线扩容
11volumeBindingMode: Immediate
12parameters:
13  # 重点:这里指定你提供的 Datastore URL
14  datastoreurl: "ds:///vmfs/volumes/xxxxxxxxxxxxxxxxxxxxx/"

应用

1kubectl apply -f vsphere-sata-sc.yaml

创建 test-sata-pvc.yaml

 1apiVersion: v1
 2kind: PersistentVolumeClaim
 3metadata:
 4  name: sata-test-pvc
 5spec:
 6  accessModes:
 7    - ReadWriteOnce
 8  resources:
 9    requests:
10      storage: 2Gi
11  storageClassName: vsphere-sata-sc # 指向你刚才创建的 SC

应用

1kubectl apply -f test-sata-pvc.yaml

待状态变为 Bound 后,去 vCenter 界面查看该磁盘的 属性。
确认它的 “所在数据存储”