前言
接上文https://blog.csdn.net/saynaihe/article/details/115187298 kubeadm 搭建高可用ha集群,接下来考虑的度量有存储,对外暴露服务。日志收集,监控报警几项。个人习惯就先将存储优先来讨论了。
关于存储storageclass
如https://kubernetes.io/zh/docs/concepts/storage/storage-classes所示,常见的有很多类型,如下:
由于我的集群建在公有云上面 腾讯云有开源的cbs 的 csi组件。在kubernetes1.16-1.18 环境使用docker 做runtime的环境中使用过腾讯云的开源组件。这就又拿来用了。方便集成。
初始环境
参加:https://editor.csdn.net/md/?articleId=115187298
主机名 | ip | 系统 | 内核 |
---|---|---|---|
sh-master-01 | 10.3.2.5 | centos8 | 4.18.0-240.15.1.el8_3.x86_64 |
sh-master-02 | 10.3.2.13 | centos8 | 4.18.0-240.15.1.el8_3.x86_64 |
sh-master-03 | 10.3.2.16 | centos8 | 4.18.0-240.15.1.el8_3.x86_64 |
sh-work-01 | 10.3.2.2 | centos8 | 4.18.0-240.15.1.el8_3.x86_64 |
sh-work-02 | 10.3.2.2 | centos8 | 4.18.0-240.15.1.el8_3.x86_64 |
sh-work-03 | 10.3.2.4 | centos8 | 4.18.0-240.15.1.el8_3.x86_64 |
集成腾讯云 CBS CSI
1. clone 仓库
注: kubernetes-csi-tencentcloud中包括 CBS CSI, CFS CSI 与 COSFS CSI。这里我就只用CBS块存储了。其他两个也用过,感觉用起来还是不太适合。
git clone https://github.com/TencentCloud/kubernetes-csi-tencentcloud.git
各种名词可以参照:https://github.com/TencentCloud/kubernetes-csi-tencentcloud/blob/master/docs/README_CBS_zhCN.md。
2.参照文档前置要求完成kubernetes集群的配置修改
1. master节点
参照https://github.com/TencentCloud/kubernetes-csi-tencentcloud/blob/master/docs/README_CBS_zhCN.md。参照一下图片前置要求
对三台master节点修改 kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml。增加如下配置(查看对应版本对应需求)
- --feature-gates=VolumeSnapshotDataSource=true
2. 修改所有节点的kubelet配置
kubelet增加–feature-gates=VolumeSnapshotDataSource=true的支持
3.部署CBS CSI插件
1. 使用腾讯云 API Credential 创建 kubernetes secret:
1. 前提:
首先的在腾讯云后台https://console.cloud.tencent.com/cam创建一个用户,访问方式我是只开通了编程访问,至于用户权限则需要开通CBS相关权限。我是直接绑定了CSB两个默认相关的权限,还有财务付款权限,记得一定的支持付款,否则硬盘创建不了…。玩的好的可以自定义创建下权限,否则个人觉得财务权限貌似有点大…
2. 根据文档提示将SecretId SecretKey base64转换生成kubernetes secret
echo -n "XXXXXXXXXXX" |base6 echo -n "XXXXXXXXXX" |base64
将base64写入secret.yaml文件
cd /root/kubernetes-csi-tencentcloud-master/deploy/cbs/kubernetes kubectl apply -f secret.yaml
注:项目是在root目录git clone的,故cd /root/kubernetes-csi-tencentcloud-master/deploy/cbs/kubernetes.包括一下没有特别强调目录的,都是在此目录下执行的
2. 创建rbac
创建attacher,provisioner,plugin需要的rbac:
kubectl apply -f csi-controller-rbac.yaml kubectl apply -f csi-node-rbac.yaml
3.创建controller,node和plugin
创建controller plugin和node plugin
kubectl apply -f csi-controller.yaml kubectl apply -f csi-node.yaml ### snapshot-crd我没有使用,字面意思应该是快照的.... kubectl apply -f snapshot-crd.yaml
kubectl get pods -n kube-system 可以看到cbs-csi相关组件创建ing:
4. 验证
切换目录
cd /root/kubernetes-csi-tencentcloud-master/deploy/cbs/examples
- 参照storageclass参数修改storageclass-basic.yaml
创建storageclass: kubectl apply -f storageclass-basic.yaml 创建pvc: kubectl apply -f pvc.yaml 创建申请pvc的pod: kubectl apply -f app.yaml
嗯 kubectl get storageclass
到此为止,搭建其他应用就可以用cbs存储了。具体参数看文档 看文档 看文档 说三遍。