参考
一. 框架
说明:
在kubernetes集群中部署vsphere cloud provider;
运行在kubernetes集群中的Pod通过多种方式(静态或动态)可调用vSAN/VMFS等后端存储的VMDK做为其持久卷。
二. 环境
2.1 验证环境
vCenter
IP
Version
USER
PASSWORD
DataCenter
DataStore
Remark
172.20.0.16
6.0.0 内部版本5112533
administrator@vsphere.local
AIUc63$#v4LZ
Mcloud
-
-
-
k8s@vsphere.local
k8S!@Vcp123
Mcloud
vsanDatastore
说明:
使用administrator账号设置disk UUID;
使用administrator账号为vsphere cloud provider(vcp)账号赋权;
kubernetes集群使用vcp账号与vCenter交互;
DataCenter是vCenter下的一级逻辑组织,取kubernetes集群所在DataCenter对应名字即可;
DataStore取kubernetes集群需要调用的后端存储名字,类型可以是vSAN,VMFS,NFS & VVol等。
kubernetes-cluster nodes
Hostname
IP
Roles
Version
Remark
kubemaster01
172.30.200.101
master&minion
v1.12.3
kubemaster02
172.30.200.102
master&minion
v1.12.3
kubemaster03
172.30.200.103
master&minion
v1.12.3
govc node
Hostname
IP
Roles
Version
Remark
ansible01
172.30.200.46
govc
v0.19.0
2.2 一些先决条件
1.组建kubernetes集群的vm节点必须放置在一个vsphere vm folder,在vCenter的虚拟机与模板下创建,文件夹名自定义,这里定义为kubernetes-cluster;
2.组建kubernetes集群的vm节点的name与其操作系统hostname一致(实际验证后,并非强制要求);
3.组建kubernetes集群的vm节点的disk UUID需要设置为enabled(见下文详细设置);
4.(针对kubernetes version is 1.8.x or below的规则,未验证在1.8.x以上版本是否可不遵守此规则)组建kubernetes集群的vm节点的name需要遵守以下regex:[a-z](([-0-9a-z]+)?[0-9a-z])?(\.[a-z0-9](([-0-9a-z]+)?[0-9a-z])?)*:
不以数字开头;
不使用大写字母;
不包含除“.”和“-”以外的任何特殊字符;
必须至少包含三个字符,但不超过 63 个字符。
5.在vCenter设置vSphere cloud provider user,这里vcp账号设置为k8s@vsphere.lo