前言 教程尽量简洁
在此之前 设定为 已经安装好了 k8s 集群
准备 创建存储桶 快速跳转COS
首先我们需要创建一个COS存储桶 如果有则可跳过
设置桶为私有或者公开都行 因为后面的话我们会使用 访问密钥访问 有账号管理权限
自选一下需要的功能 这边我直接跳过
点击确认后我们就成功创建了一个存储桶
记录一下请求域名 格式为 存储桶名称-用户ID-腾讯云地域域名 后续要用
创建访问密钥
创建一个新的密钥
保存两个值以便接下来用
这样我们就准备好需要提前准备好的信息
安装CSI-COS 快速跳转到代码库
拉取代码
拉取代码
1 2 git clone https://github.com/TencentCloud/kubernetes-csi-tencentcloud cd kubernetes-csi-tencentcloud
官方有自己的部署手册 跳转过去
安装环境
1 2 3 4 kubectl apply -f deploy/cosfs/kubernetes/csidriver-new.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-launcher-new.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-node-rbac.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-node-new.yaml
1 2 3 4 kubectl apply -f deploy/cosfs/kubernetes/csidriver-old.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-launcher-new.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-node-rbac.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-node-new.yaml
如果你的k8s版本 >= 1.14 && < 1.18
1 2 3 4 kubectl apply -f deploy/cosfs/kubernetes/csidriver-old.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-launcher-old.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-node-rbac.yaml kubectl apply -f deploy/cosfs/kubernetes/csi-node-old.yaml
创建Secret 1 kubectl create secret generic csi-cos-secret -n kube-system --from-literal=SecretId=上面创建的访问密钥ID --from-literal=SecretKey=上面创建的访问密钥Key
也可以使用Yaml文件部署 二选一
1 2 kubectl apply -f deploy/cosfs/examples/secret.yaml
创建PV,PVC 创建PV 1 2 vi deploy/cosfs/examples/cosfs/pv.yaml
文件样例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 apiVersion: v1 kind: PersistentVolume metadata: name: csi-cosfs-pv spec: accessModes: - ReadWriteMany capacity: storage: 10Gi csi: driver: com.tencent.cloud.csi.cosfs volumeHandle: csi-cosfs-pv volumeAttributes: url: "http://cos.ap-guangzhou.myqcloud.com" bucket: "xxx" path: "/" dbglevel: "err" additional_args: "-oensure_diskfree=20480" nodePublishSecretRef: name: csi-cos-secret namespace: kube-system
需要修改的值
参数名称
值
解释
url
http://cos.ap-guangzhou.myqcloud.com
请注意创建存储桶最后一句话内解释的域名格式不要使用完整域名
bucket
sss-12314453
存储桶的完整名称 后面的数字是你的用户ID 和上面说的一样 有解释
path
/
对应 cos 内的存储目录 默认 / 就行如果你想修改也行 但是提前创建目录
剩下值可以缺省 如果你想知道详细内容可以 点击这里
创建PV
1 kubectl apply -f deploy/cosfs/examples/cosfs/pv.yaml
创建PVC 1 vi deploy/cosfs/examples/cosfs/pvc.yaml
样例文件
1 2 3 4 5 6 7 8 9 10 11 12 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-cosfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: csi-cosfs-pv storageClassName: ""
你可以修改storage 字段来定义pvc大小 按照你需要的设置 大小又不收费
1 kubectl apply -f deploy/cosfs/examples/cosfs/pvc.yaml
使用PVC 到这里你应该已经可以用了 我们创建一个pod来测试一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 cat > pod.yaml << EOF apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: csi-cosfs-pod name: csi-cosfs-pod spec: replicas: 1 selector: matchLabels: k8s-app: csi-cosfs-pod template: metadata: labels: k8s-app: csi-cosfs-pod spec: containers: - image: nginx name: csi-cosfs-pod volumeMounts: - mountPath: /csi-cosfs name: csi-cosfs volumes: - name: csi-cosfs persistentVolumeClaim: claimName: csi-cosfs-pvc EOF
1 2 3 4 - name: csi-cosfs persistentVolumeClaim: claimName: csi-cosfs-pvc
运行pod
1 kubectl apply -f pod.yaml