KubeSphere安装vSAN CSI

一、背景介绍

  上篇文章介绍了KubeSphere的安装,采用一台master加四台work节点搭建,没有高可用。不出意外的崩了,console起不来了。

  随后安装官方文档VMware vSphere安装KubeSphere,地址:在 VMware vSphere 安装 KubeSphere。使用 ./kk 生成config-sample.yaml文件需要按照链接内容更改。

  KubeSphere官方文档中,没有vSAN CSI安装教程,本篇采用VMware官方方法,如果有更好方法欢迎留言。VMware vSphere Container Storage Plug-in 3.0官方地址:vSphere Container Storage Plug-in Deployment (vmware.com) 

环境介绍:Kubernetes:v1.23.10、vSAN:8.0.2 

任务目标:kubeSphere上安装VMware vSphere Container Storage Plug-in 3.0,并创建PVC。

二、准备工作

1、虚拟机高级参数设置

    在上篇提到过的打开虚拟机硬盘UUID。

参考官方文档按需配置(CPI、FileServices):Preparing for Installation of vSphere Container Storage Plug-in (vmware.com)

2、下载相应的文档

  因为网络原因,我们无法抓取镜像。先将相应的yaml下载,找出所需的image,使用魔法下载后上传至私有镜像仓库。

  namespace.yaml

wget https://raw.githubusercontent.com/kubernetes-sigs/vsphere-csi-driver/v3.0.0/manifests/vanilla/namespace.yaml

  该文件只是创建命名空间,无需更改。

kubectl apply -f namespace.yaml

csi-vsphere.conf

此文件需要创建。

文件地址:Create a Kubernetes Secret for vSphere Container Storage Plug-in (vmware.com)

vsphere-csi-driver.yaml

wget https://raw.githubusercontent.com/kubernetes-sigs/vsphere-csi-driver/v3.0.0/manifests/vanilla/vsphere-csi-driver.yaml

该文件里有image需要更改。

3、下载镜像并上传至镜像仓库

 (1)、 打开vsphere-csi-driver.yaml,找出所有image,并记录记录位置。

247   k8s.gcr.io/sig-storage/csi-attacher:v4.2.0
265   k8s.gcr.io/sig-storage/csi-resizer:v1.7.0
284   gcr.io/cloud-provider-vsphere/csi/release/driver:v3.0.0
335   k8s.gcr.io/sig-storage/livenessprobe:v2.9.0
343   gcr.io/cloud-provider-vsphere/csi/release/syncer:v3.0.0
381   k8s.gcr.io/sig-storage/csi-provisioner:v3.4.0
397   k8s.gcr.io/sig-storage/csi-snapshotter:v6.2.1
403   k8s.gcr.io/sig-storage/csi-snapshotter:v6.2.1
457   k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.7.0
480   gcr.io/cloud-provider-vsphere/csi/release/driver:v3.0.0
542   k8s.gcr.io/sig-storage/livenessprobe:v2.9.0
604   k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.7.0
627   gcr.io/cloud-provider-vsphere/csi/release/driver:v3.0.0
684   k8s.gcr.io/sig-storage/livenessprobe:v2.9.0

(2)、配置docker proxy并pull镜像

  新建一台虚拟机

mkdir -p /etc/systemd/system/docker.service.d

vim http-proxy.conf

[Service]
Environment="HTTP_PROXY=192.168.0.10:7890"
Environment="HTTPS_PROXY=192.168.0.10:7890"

退出文件后,

systemctl daemin-reload

systemctl restart docker

打开代理服务后就可以pull镜像了。
 docker pull gcr.io/cloud-provider-vsphere/csi/release/syncer:v2.0.0
 docker pull gcr.io/cloud-provider-vsphere/csi/release/driver:v2.0.0
 docker pull quay.io/k8scsi/csi-resizer:v0.3.0
 docker pull quay.io/k8scsi/csi-provisioner:v1.4.0
 docker pull quay.io/k8scsi/csi-attacher:v2.0.0
 docker pull quay.io/k8scsi/csi-node-driver-registrar:v1.2.0
 docker pull quay.io/k8scsi/livenessprobe:v1.1.0
 docker pull k8s.gcr.io/sig-storage/csi-snapshotter:v6.2.1

(3)、将镜像push至私有仓库

harbor的创建过程就省略了。

使用docker tag 更改镜像名

使用docker push 上传镜像

4、更改配置文件

(1)csi-vsphere.conf
下载vCenter 根证书

wget https:192.167.2.10/certs/download.zip

unzip download.zip

cp /crets/lin/dbad4059.0 /etc/ssl/certs/

cd /etc/ssl/certs/

kubectl create configmap vc-root-ca-cert --from-file=dbad4059.0 --namespace=vmware-system-csi

编辑csi-vsphere.conf文件

详细文件说明:Create a Kubernetes Secret for vSphere Container Storage Plug-in (vmware.com)

打开csi-vsphere.conf文件

[Global]
cluster-id = "vsan01"       # 唯一标识
cluster-distribution =  "CSI"   # 描述
#ca-file = <ca file path> # optional, use with insecure-flag set to false
#thumbprint = "<cert thumbprint>" # optional, use with insecure-flag set to false without providing ca-file

[VirtualCenter "192.167.2.10"]       # vcenter地址
insecure-flag = "false"
ca-file = "/etc/ssl/certs/dbad4059.0"      # 下载的vcenter证书地址
user = "**************"          # 用户名
password = "**********"          # 密码
port = "443"
datacenters = "Datacenter"    # 数据中心名称

#[Snapshot]
#global-max-snapshots-per-block-volume = 3

#[Labels]
#topology-categories = "k8s-zone"

修改上述的信息

(2)vsphere-csi-driver.yaml

将vsphere-csi-driver.yaml中的镜像地址,替换为私有仓库中的镜像地址。

将vcenter证书挂载给vsphere-csi-controller和vsphere-syncer

三、安装CSI

创建密钥

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

查看密钥是否成功创建

kubectl get secret vsphere-config-secret --namespace=vmware-system-csi

给所有master打污点

kubectl taint nodes master01 node-role.kubernetes.io/control-plane=:NoSchedule

kubectl taint nodes master02 node-role.kubernetes.io/control-plane=:NoSchedule

kubectl taint nodes master03 node-role.kubernetes.io/control-plane=:NoSchedule

部署CSI

kubectl apply -f vsphere-csi-driver.yaml

四、创建存储类和PVC

vim storageclass.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: vsan
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"   #默认使用
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "vSAN Default Storage Policy"  #Optional Parameter
# datastoreurl: "ds:///vmfs/volumes/vsan:52cdfa80721ff516-ea1e993113acfc77/" #Optional Parameter
# # csi.storage.k8s.io/fstype: "ext4" #Optional Parameter

也可以使用KubeSphere console创建,注意provisioner为csi.vsphere.vmware.com。

vim pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: vsan

五、验证

  从vCenter vSAN 容器卷中查看持久卷

卷名和容量大小,在vCenter和KubeSphere查看完全对应。

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值