《kubernetes-1.8.0》15-addon-vSphere Cloud Provider
《kubernetes-1.8.0》15-addon-vSphere Cloud Provider《kubernetes 1.8.0 测试环境安装部署》时间:2017-12-04一、关于vSphere Cloud Provider:vSphere Cloud Provider 配置了这玩意能够让k8s集群通过(volume、pv、pvc、 Storage Class)使用 vsp
《kubernetes-1.8.0》15-addon-vSphere Cloud Provider
《kubernetes 1.8.0 测试环境安装部署》
时间:2017-12-04
一、关于vSphere Cloud Provider:
vSphere Cloud Provider
配置了这玩意能够让k8s集群通过(volume
、pv
、pvc
、 Storage Class
)使用 vsphere 企业级的存储(通过vsphere的vmdk实现),如果k8s宿主机使用的是vmware平台的虚拟机,这一特性真的还挺诱人的。。
二、配置步骤:
step 1:
Create a VM folder and move Kubernetes Node VMs to this folder.
进到vcenter控制台创建目录,并将之前部署好的运行k8s的虚拟机迁移到改目录:
- 目录名叫kuebrnetes-cluster:这个没所谓
- vm的name:必须和kubernetes各个节点的hostname一致,可以省去很多麻烦,切记!!
step 2:
Enable disk UUID on Node virtual machines.
启用vm的disk UUID,通过
govc
工具
在能够访问vcenter的linux主机上,安装dovc 工具,方法 –> GOVC tools
- 设置govc环境变量:
export GOVC_URL='vCenter IP OR FQDN'
export GOVC_USERNAME='vCenter User'
export GOVC_PASSWORD='vCenter Password'
export GOVC_INSECURE=1
- GOVC_URL : vcenter的地址
- GOVC_USERNAME : vcenter的管理员用户名
GOVC_PASSWORD : vcenter的管理员密码
通过govc找一下几个vm节点的位置:
[root@node-131 vsphere-volume]# govc ls /DateCenter-PTYW/vm/kubernetes-cluster
/DateCenter-PTYW/vm/kubernetes-cluster/node.134
/DateCenter-PTYW/vm/kubernetes-cluster/node.132
/DateCenter-PTYW/vm/kubernetes-cluster/node.133
/DateCenter-PTYW/vm/kubernetes-cluster/node.131
- 设置这几台的
disk.enableUUID
值为1:
govc vm.change -e="disk.enableUUID=1" -vm='/DateCenter-PTYW/vm/kubernetes-cluster/node.134'
govc vm.change -e="disk.enableUUID=1" -vm='/DateCenter-PTYW/vm/kubernetes-cluster/node.133'
govc vm.change -e="disk.enableUUID=1" -vm='/DateCenter-PTYW/vm/kubernetes-cluster/node.132'
govc vm.change -e="disk.enableUUID=1" -vm='/DateCenter-PTYW/vm/kubernetes-cluster/node.131'
step 3:
创建 vSphere Cloud Provider
所使用的用户,并给予角色及相应权限(我这里是测试环境,所以就用管理员账户了,有需要建立独立用户的参考一下角色及权限表)
这里关于system.*的权限,通过看vmware的文档不用特别赋值,缺省就带,在角色清单里也没有办法找到这个组的权限
step 4:
创建vsphere cloud配置文件:
/etc/kubernetes/vsphere.conf
[Global]
user = "vCenter username for cloud provider"
password = "password"
server = "IP/FQDN for vCenter"
port = "443" #Optional
insecure-flag = "1" #set to 1 if the vCenter uses a self-signed cert
datacenter = "Datacenter name"
datastore = "Datastore name" #Datastore to use for provisioning volumes using storage classes/dynamic provisioning
working-dir = "vCenter VM folder path in which node VMs are located"
vm-name = "VM name of the Master Node" #Optional
vm-uuid = "UUID of the Node VM" # Optional
[Disk]
scsicontrollertype = pvscsi
user
:可是是step 3中创建的vSphere Cloud Provider
所使用的用户,我这里填的是管理员用户,生产环境还是建议用专用的用户。datastore
:填写数据存储的名字,本例中为local_datastore_47;datacenter
: 填写数据中心的名字,本例中为DateCenter-PTYW;vm-name
: 很关键,填本机的node name,并与vcenter中的vm name保持一致;否则将出现node无法注册的问题;vm-uuid
:通过以下方式获取本节点的uuid,完了填进去
cat /sys/class/dmi/id/product_serial | sed -e 's/^VMware-//' -e 's/-/ /' | awk '{ print toupper($1$2$3$4 "-" $5$6 "-" $7$8 "-" $9$10 "-" $11$12$13$14$15$16) }'
同时在所有node上创建上述文件;
step 5:
在 controller-manager, API server 和 Kubelet 配置文件中添加参数,开启 vSphere Cloud Provider的支持(node节点只要修改kubelet的);
加上这个两个参数:
--cloud-provider=vsphere
--cloud-config=/etc/kubernetes/vsphere.conf
重启先关服务:
systemctl daemon-reload
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kubelet
检查相关服务是否成功启动一级节点有没有重新ready:
[root@node-131 vsphere-volume]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-1 Healthy {"health": "true"}
etcd-0 Healthy {"health": "true"}
etcd-2 Healthy {"health": "true"}
[root@node-131 vsphere-volume]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node.131 Ready <none> 1d v1.8.0
node.132 Ready <none> 1d v1.8.0
node.133 Ready <none> 1d v1.8.0
node.134 Ready <none> 1d v1.8.0
至此 vSphere Cloud Provider特性添加完成:
本系列其他内容:
参考资料:
更多推荐
所有评论(0)