3 min read

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