Byteplus vke 掛載torch object storage(tos)
參考至 官方文檔
創建 vke 可參考以下文章
Byteplus Vital Kubernetes Engine(vke) 初探
本次創建 VKE 時選用 Vital Container Instance (VCI)進行創建, 在創建時遇到一些問題,所以透過這篇文章記錄下

而這次要進行的是創建 tos 並且掛載進容器內,會依序進行以下操作
- 創建IAM 給予vke 權限
- 使用 tos 創建 pv/pvc
- 綁定至容器 volumeMounts
創建IAM 給予vke 權限
點擊右上角大頭貼選擇 IAM
,並且點擊 新建用戶
創建一個新用戶


權限的部分可以先給予 TOSFullAccess
後續有必要的話可以在進行調整。

創建完成後會取得以下密鑰(akId)及檢查訪問密鑰(akSecret),而該把鑰匙擁有tos全部的權限,請記得收藏好自己的鑰匙。 (當然我等下測試完也會釋放= =)

使用 tos 創建 pv/pvc
擁有能訪問 tos的權限後需要將鑰匙設定在 vke ,而創建方式有分兩個而本範例會全部使用yaml進行操作。
- 透過vke面板進行創建
- 透過yaml 進行創建

secret 方式可參考以下文章。
Kubernetes配置管理-Secret
Kubernetes配置管理-Secret 一些用法 及範例

apiVersion: v1
kind: Secret
metadata:
name: tos-key
namespace: default
type: Opaque
stringData:
akId: AKAPYTc2MTk1MzMzYTFiNGU2NjhiMGQzNWM5ZGU2OTgwM2E
akSecret: TWpNeU5UUmpOelk1TUdGa05EQTNPV0kzT1Rnek9UUTNOMk16WWpNNE1XUQ==
接下來將會透過這把secret,進行pv及pvc的設置。
而 tos 的endpoint 記得選擇內網的 s3 endpoint。

pv 注意事項:
- url 要填寫正確
- storage 容量設置
- path 設置工作目錄
- bucket 要設置tos創建的名稱
以下是創建pv的範例
apiVersion: v1
kind: PersistentVolume
metadata:
name: vke-tos-static-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
csi:
driver: tos.csi.volcengine.com
nodePublishSecretRef:
name: tos-key
namespace: default
nodeStageSecretRef:
name: tos-key
namespace: default
volumeAttributes:
bucket: tos-test
path: /
url: http://tos-s3-cn-hongkong.ibytepluses.com
fuse_pod_cpu_request: "100m"
fuse_pod_cpu_limit: "2"
fuse_pod_memory_request: 100Mi
fuse_pod_memory_limit: "2Gi"
additional_args: -oparallel_count=20 -oallow_other
dbglevel: err
volumeHandle: tos-pv
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
依序上方pv 創建pvc供 pod 使用。
注意事項:
- 要注意給予的容量大小不能超過pv (若有設定的話)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vke-tos-static-pvc
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
volumeMode: Filesystem
volumeName: vke-tos-static-pv
綁定至容器 volumeMounts
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-text
spec:
replicas: 1
selector:
matchLabels:
app: nginx-text
template:
metadata:
labels:
app: nginx-text
spec:
containers:
- name: nginx-text
image: nginxdemos/hello:0.4-plain-text
resources:
limits:
cpu: "0.5"
memory: "500Mi"
requests:
cpu: "200m"
memory: "256Mi"
ports:
- containerPort: 80
volumeMounts:
- name: tos-pv
mountPath: /data
volumes:
- name: tos-pv
persistentVolumeClaim:
claimName: vke-tos-static-pvc