《kubernetes-1.8.0》15-addon-vSphere Cloud Provider

来源:互联网 发布:网络人身攻击怎么办 编辑:程序博客网 时间:2024/06/11 13:19

《kubernetes-1.8.0》15-addon-vSphere Cloud Provider

《kubernetes 1.8.0 测试环境安装部署》

时间:2017-12-04

一、关于vSphere Cloud Provider:

vSphere Cloud Provider 配置了这玩意能够让k8s集群通过(volumepvpvcStorage 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-reloadsystemctl restart kube-apiserversystemctl restart kube-controller-managersystemctl restart kubelet

检查相关服务是否成功启动一级节点有没有重新ready:

[root@node-131 vsphere-volume]# kubectl get csNAME                 STATUS    MESSAGE              ERRORscheduler            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 nodesNAME       STATUS    ROLES     AGE       VERSIONnode.131   Ready     <none>    1d        v1.8.0node.132   Ready     <none>    1d        v1.8.0node.133   Ready     <none>    1d        v1.8.0node.134   Ready     <none>    1d        v1.8.0

至此 vSphere Cloud Provider特性添加完成:

本系列其他内容:

  • 01-环境准备

  • 02-etcd群集搭建

  • 03-kubectl管理工具

  • 04-master搭建

  • 05-node节点搭建

  • 06-addon-calico

  • 07-addon-kubedns

  • 08-addon-dashboard

  • 09-addon-kube-prometheus

  • 10-addon-EFK

  • 11-addon-Harbor

  • 12-addon-ingress-nginx

  • 13-addon-traefik

参考资料:

https://kubernetes.io/docs/getting-started-guides/vsphere/