阿里云容器服務ACK的容器存儲功能深度融合阿里云存儲服務,完全兼容Kubernetes原生的存儲服務,可通過部署CSI存儲組件接入阿里云存儲服務。ACK支持Pod自動綁定阿里云云盤、NAS、OSS、CPFS、本地卷等存儲服務。本文介紹如何在注冊集群中使用阿里云CSI存儲。
前提條件
已創建注冊集群,并將自建Kubernetes集群接入注冊集群。具體操作,請參見創建注冊集群。
確保注冊集群的版本為1.24或以上版本。
如果您的自建Kubernetes集群部署在本地,則在本地節點中掛載云上存儲卷時,需要確保本地和云上的網絡已通過專線連通。
已通過kubectl工具連接注冊集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
注意事項
如果您的自建Kubernetes集群部署在阿里云ECS上,您需要為ECS實例添加節點標簽。關于如何為ECS實例添加節點標簽,請參見自建Kubernetes集群接入ACK注冊集群后的ECS節點初始化配置。
如果您使用注冊集群節點池功能為本地數據中心自建Kubernetes集群擴容的阿里云ECS節點,則默認已添加節點標簽
alibabacloud.com/external=true
。
步驟一:為CSI組件配置RAM權限
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
onectl通過RAM用戶的AccessKey來訪問云服務資源,您可以執行以下命令,配置RAM用戶的CSI組件權限。
onectl ram-user grant --addon csi-plugin
預期輸出:
Ram policy ack-one-registered-cluster-policy-csi-plugin granted to ram user ack-one-user-ce313528c3 successfully.
通過控制臺配置
在注冊集群中安裝CSI存儲組件前,您需要在自建Kubernetes集群中設置AccessKey用來訪問云服務的權限。設置AccessKey前,您需要創建RAM用戶并為其添加訪問相關云資源的權限。
創建RAM用戶。具體操作,請參見創建RAM用戶。
創建自定義權限策略。
關于創建自定義權限策略的操作步驟,請參見創建自定義權限策略。
通過以下自定義策略示例,添加磁盤、快照、快照策略、資源標簽、實例、文件系統及倉庫的管理權限。關于API參考的更多信息,請參見API概覽。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:AttachDisk", "ecs:DetachDisk", "ecs:DescribeDisks", "ecs:CreateDisk", "ecs:ResizeDisk", "ecs:CreateSnapshot", "ecs:DeleteSnapshot", "ecs:CreateAutoSnapshotPolicy", "ecs:ApplyAutoSnapshotPolicy", "ecs:CancelAutoSnapshotPolicy", "ecs:DeleteAutoSnapshotPolicy", "ecs:DescribeAutoSnapshotPolicyEX", "ecs:ModifyAutoSnapshotPolicyEx", "ecs:AddTags", "ecs:DescribeTags", "ecs:DescribeSnapshots", "ecs:ListTagResources", "ecs:TagResources", "ecs:UntagResources", "ecs:ModifyDiskSpec", "ecs:CreateSnapshot", "ecs:DeleteDisk", "ecs:DescribeInstanceAttribute", "ecs:DescribeInstances" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "nas:DescribeFileSystems", "nas:DescribeMountTargets", "nas:AddTags", "nas:DescribeTags", "nas:RemoveTags", "nas:CreateFileSystem", "nas:DeleteFileSystem", "nas:ModifyFileSystem", "nas:CreateMountTarget", "nas:DeleteMountTarget", "nas:ModifyMountTarget", "nas:TagResources", "nas:SetDirQuota", "nas:EnableRecycleBin", "nas:GetRecycleBinAttribute" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "oss:PutBucket", "oss:GetObjectTagging", "oss:ListBuckets", "oss:PutBucketTags", "oss:GetBucketTags", "oss:PutBucketEncryption", "oss:GetBucketInfo" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
為RAM用戶添加權限。具體操作,請參見為RAM用戶授權。
為RAM用戶創建AccessKey。具體操作,請參見獲取AccessKey。
使用AccessKey在注冊集群中創建名為alibaba-addon-secret的Secret資源。
安裝CSI組件時將自動引用此AccessKey訪問對應的云服務資源。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'
說明<your access key id>
及<your access key secret>
為上一步獲取的AccessKey信息。
步驟二:安裝CSI組件
通過onectl安裝
執行以下命令,安裝CSI組件。
onectl addon install csi-plugin
onectl addon install csi-provisioner
預期輸出:
Addon csi-plugin, version **** installed.
Addon csi-provisioner, version **** installed.
通過控制臺安裝
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
單擊存儲頁簽,在csi-plugin及csi-provisioner卡片單擊安裝。
在提示對話框中確認版本信息后單擊確定。
步驟三:使用存儲卷
注冊集群對于各存儲卷的使用情況如下表所示。
存儲卷類型 | 參考鏈接 |
NAS | |
OSS | |
本地存儲卷 | |
CPFS | |
云盤 |