使用腾讯云CFS作为TKE(容器服务)的默认StorageClass,并动态分配PVC

发布于:2024-10-24 编辑:匿名 来源:网络

今天安装Kubesphere时,发现StorageClass缺失,导致无法创建依赖的PVC。作为StorageClass,CBS具有不错的性能,但对于非在线应用来说,成本太高。

每个PVC后面都会创建一个独立的CBS硬盘,并且根据申报数量创建多少个磁盘,不划算。使用NFS比较合适,比如腾讯云的CFS。

普通版的读写性能为MB/s,已经足够了。 K8S版本:v1.29.2 我们先看一下PV和PVC的设计原理。

PV和PVC的设计原理抵得上千言万语。 1. 创建NFS。

由于K8S部署在腾讯云上,因此NFS选择了腾讯云的CFS创建文件系统,并选择了与CVM相同的可用区和VPC。创建完成后,关键看容量上限是TB,吞吐量上限是MB/s。

IP地址为:10.0.0.68,以下示例中将使用该地址。接下来,您需要安装 NFS Provisioner,以便 K8S 可以读写 CFS,并作为集群的默认存储类。

2. 安装NFS Provisioner,请参考K8S工作组提供的nfs-subdir-external-provisioner。准备安装必备的下载仓库,后面会用到里面的配置文件。

代码语言: bash copy $ git clone cd nfs-subdir-external-provisioner2.1 配置认证代码语言: bash copy # 将RBAC对象的主题设置为当前部署provisioner的命名空间 $ NS=$(kubectl config get-contexts|grep -e "^\*" |awk '{print $5}')$ NAMESPACE=${NS:-default}$ sed -i'' "s/命名空间:.*/命名空间: $NAMESPACE / g" ./deploy/rbac.yaml ./deploy/deployment.yaml$ kubectl create -f deploy/rbac.yamldeploy/rbac.yaml 有以下内容,定义了 NFS 配置器依赖的权限。代码语言:yaml复制apiVersion: v1kind: ServiceAccountmetadata: name: nfs-client-provisioner # 替换为部署provisioner的命名空间namespace: default---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: nfs- client-provisioner-runnerrules: - apiGroups: [""] 资源: ["nodes"] 动词: ["get", "list", "watch"] - apiGroups: [""] 资源: ["persistentvolumes"] 动词:[“get”、“list”、“watch”、“create”、“delete”] - apiGroups:[“”]资源:[“persistentvolumeclaims”]动词:[“get”、“list”、“watch” , "update"] - apiGroups: ["storage.k8s.io"] 资源: ["storageclasses"] 动词: ["get", "list", "watch"] - apiGroups: [""] 资源: ["事件”]动词:[“创建”、“更新”、“补丁”]---种类:ClusterRoleBindingapi版本:rbac.authorization.k8s.io/v1metadata:名称:run-nfs-client-provisionersubjects:-种类:ServiceAccount名称:nfs- client-provisioner # 替换为部署配置程序的命名空间 namespace: defaultroleRef: kind: ClusterRole name: nfs-client-provisioner-runner apiGroup: rbac.authorization.k8s.io---kind: RoleapiVersion: rbac.authorization.k8s.io /v1metadata: name:leader-locking-nfs-client-provisioner # 替换为部署配置程序的命名空间 namespace: defaultrules: - apiGroups: [""] resources: ["endpoints"] verbs: ["get", "list" , "watch", "create", "update", "patch"]---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name:leader-locking-nfs-client-provisioner # 替换为命名空间 where临时条件部署了一个名称空间:defaultsubjects:- kind:ServiceAccount名称:nfs-client-provisioner#替换为部署provisioner的名称空间namespace:defaultroleRef:kind:角色名称:leader-locking-nfs-client-provisioner apiGroup:rbac.authorization。

k8s.io2.2configurenfsprovisioner配置nfsprovisioner部署配置(deploy/deployment.yaml),有三处需要修改: NFS_SERVER: 10.0.0.68(10.0.0.68是我的NFS地址) NFS_PATH:/(由于将创建的NFS(K8S专用)作为StorageClass,所以直接选择根目录) image:默认镜像仓库在国内无法访问。可以通过代理pull,然后push到自己的仓库。

代码语言:yaml 复制种类:DeploymentapiVersion:apps/v1metadata:名称:nfs -client-provisionerspec:副本:1 选择器:matchLabels:app:nfs-client-provisioner 策略:类型:重新创建模板:元数据:标签:app:nfs-客户端配置规范:serviceAccountName:nfs-client-provisioner 容器:-名称:nfs-client-provisioner 镜像:registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 volumeMounts: - 名称:nfs-client-root mountPath: /persistentvolumes env: - 名称:PROVISIONER_NAME 值:k8s-sigs.io/nfs-subdir-external-provisioner - 名称:NFS_SERVER 值:10.0。 0.68 -- name: NFS_PATH value: /volumes: -- name: nfs-client-root nfs: server: 10.0.0.68 path: /创建部署代码语言: bash copy kubectl apply -f deploy/deployment.yaml 检查是否部署部署代码正常 Language: bash copy # kubectl get deployment nfs-client-provisionerNAME READY UP-TO-DATE AVAILABLE AGenfs-client-provisioner 1/1 1 1 63m2.3 Deploy StorageClass 修改deploy/class.yaml,添加 is- 语句default-class ,将 nfs-client 设置为默认 storageclass 代码语言:yaml copy apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: nfs-client comments: storageclass.kubernetes.io/is-default-class: "true" provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # 或者选择其他名称,必须与部署的env PROVISIONER_NAME'parameters: archiveOnDelete: "false" 代码语言: bash copy kubectl apply -f deploy/检查class.yaml,可以看到nfs-client(默认)包含默认识别码语言: bash copy # kubectl get scNAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGEnfs-client (default) k8s-sigs.io/nfs-subdir-external-provisioner删除 立即 false 66m2.4 测试代码语言:bash copy $ kubectl create -f deploy/test-claim.yaml -f deploy/test-pod.yaml 查看状态,一切正常代码语言:bash copy # kubectl get pvc,podNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGEpersistentvolumeclaim/test-claim Bound pvc-dcc5a-d58b-a-bc21-0ea61b8b7c9f 1Mi RWX nfs-client 68mNAME READY STATUS RE网络文件系统-client-provisioner-98cljrc6 1/1 Running 0 36m 查看nfs上的目录状态 代码语言:bash copy # mount 10.0.0.68:/ /mnt# ll /mnt 总使用量 0drwxrwxrwx 2 root root 20 March 19 10:56 默认 - test-claim-pvc-dcc5a-d58b-a-bc21-0ea61b8b7c9fdrwxrwxrwx 3根根3月19日26日11:07 kubesphere-monitoring-system-prometheus-k8s-db-prometheus-k8s-0-pvc-ae61-9f1f-0c50# ll /mnt/default-test-claim-pvc-dcc5a-d58b-a-bc21-0ea61b8b7c9f/总使用量 0-rw-r--r-- 1 root root 0 March 19 10:56 SUCCESS 此时,将 nfs已成功设置为 k8s 默认存储类。

FAQ0/2 节点可用:pod 具有未绑定的立即 PersistentVolumeClaims。测试Pod时,发现由于pvc绑定失败导致调度失败。

最终排查是因为镜像问题导致nfs Provisioner部署失败。代码语言:bash copy kubectl describe pod test-pod...Events: Type Reason Age From Message ---- ------ ---- ---- ------- 警告 FailedScheduling 34s 默认-scheduler 0/2 个节点可用:pod 具有未绑定的即时 PersistentVolumeClaims。

抢占: 0/2 个节点可用: 2 抢占对调度没有帮助。mount.nfs: 挂载:/ifs/kubernetes failed, Reason by server: No 此类文件或directorynfs 配置器部署失败的原因是NFS_PATH指定了/ifs/kubernetes,但是nfs上没有这个文件。

改成 / 后,正常代码语言: bash copy # kubectl describe pod nfs-client-provisioner-7f9bc6b- cr7cj...Events: Type Reason Age From Message ---- ------ ---- ---- ---------- 正常 预定 7m14s default-scheduler 已成功将 default/nfs-client-provisioner-7f9bc6b-cr7cj 分配给 hadoop-30.com 警告 FailedMount 26s (x11 over 7m10s) kubelet MountVolume.SetUp 卷“nfs-client-root”失败:安装失败:退出状态 32安装命令:安装安装参数:-t nfs 10.0.0.68:/ifs/kubernetes /var/lib/kubelet /pods/b7d9-23c4-9d55-fbc85/volumes/kubernetes.io~nfs/nfs-client-root输出:mount.nfs:安装10.0.0.68:/ifs/kubernetes失败,服务器给出的原因:没有这样的文件或目录失败拉取并解压镜像“registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2”国内无法访问镜像仓库。需要自己更改标签或者推送到自己的镜像仓库。

使用腾讯云CFS作为TKE(容器服务)的默认StorageClass,并动态分配PVC

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 智能农田作业机器人“中科原动力”完成数千万元A轮融资

    智能农田作业机器人“中科原动力”完成数千万元A轮融资

    智能农田作业机器人“中科原动力”宣布完成数千万元A轮融资。 本轮融资由翔峰投资领投。 富邦创投、德联资本、吉林中科跟投,老股东中发启航继续跟投。 本轮融资将主要用于产品研发和农耕机器人业务线拓展。

    06-17

  • 英伟达400亿美元收购Arm遭欧盟正式调查

    英伟达400亿美元收购Arm遭欧盟正式调查

    10月28日消息,据外媒报道,欧盟委员会周三宣布对收购英国芯片设计公司启动正式反竞争调查Arm公司由美国芯片巨头NVIDIA公司开发。 英伟达今年9月宣布,将斥资1亿美元从日本软银集团手中收购Arm,预计将在18个月内完成交易。 欧盟执行副主席Margrethe Vestager表示,英伟达收购

    06-08

  • 凯雷集团申请IPO,融资规模预计接近10亿美元

    凯雷集团申请IPO,融资规模预计接近10亿美元

    北京时间9月6日晚间消息,私募股权凯雷集团LP向美国证券交易委员会提交IPO申请(美国证券交易委员会)周二。   该公司表示,尚未确定拟发行的普通单位数量和发行价格。 与之前上市的私募股权公司黑石集团(BX)一样,凯雷也将以有限合伙企业的身份上市,因此其公开发行将是

    06-17

  • 乐乐茶饮完成近2亿元Pre-A轮融资,由祥峰投资领投

    乐乐茶饮完成近2亿元Pre-A轮融资,由祥峰投资领投

    据投资界4月3日消息,乐乐茶饮近日宣布完成近2亿元Pre-A轮融资2亿元。 本轮融资由祥峰投资领投,智君水滴、普斯资本、中海投资、汉能创投、如川资本跟投。 据悉,乐乐茶业计划利用本次融资资金扩大新店,加强公司供应链体系和数据系统建设。 产品创新和品牌差异化定位赢得市

    06-18

  • 官方小程序上线,给你一场“触手可及”的西湖剑论·网络安全大会

    官方小程序上线,给你一场“触手可及”的西湖剑论·网络安全大会

    西湖剑论网络安全大会将于4月起在杭州国际博览中心举办19日至21日。 会议主题为“安全:赋能新数字时代”。 届时,政府权威人士、知名专家、学者以及杰出人物企业家将发表主题演讲,系统解读政府在建设数字技术、数字经济、数字政府、数字社会等领域的顶层设计,涵盖数字经济

    06-18

  • 仙瞳资本刘牧龙:我们还没有遇到所谓的寒冬,对于科创板IPO也没有那么着急

    仙瞳资本刘牧龙:我们还没有遇到所谓的寒冬,对于科创板IPO也没有那么着急

    “2020年后,医疗投资将不再同样受到雨雪天气的影响”到处都是露珠和花朵。 现在一些玩家已经开始变得沉默了。 他撤了吗?目前还不清楚,但市场活跃基金数量明显收窄,VC/PE投资集中在龙头企业。 ”近日,仙瞳资本高管合伙人刘牧龙在其年度峰会暨BIOINVEST论坛上接受投资界采

    06-18

  • 智加科技(Plus)宣布计划在纽交所上市

    智加科技(Plus)宣布计划在纽交所上市

    据5月10日消息,智加科技(Plus)已与特殊目的收购公司(SPAC)轩尼诗资本投资公司(Hennessy Capital Investment Corp.)正式签署正式协议。 V(HCIC V)根据合并协议,合并完成后,智加科技将成为一家上市公司,预计将在纽约证券交易所上市,股票代码为“PLAV”。 根据交易

    06-17

  • 用户角色变了?领队:和Z世代一起开始“自创”生活吧

    用户角色变了?领队:和Z世代一起开始“自创”生活吧

    生活中,你有没有遇到过这样的烦恼:夏天来了,在家锻炼完只想开空调凉快凉下来,却被冷风吹走了。 撤退;为了方便一个人生活,我精心购买了一台“迷你冰箱”,却发现容量不足以满足备货的需要;我跑遍了大大小小的商场购买家电,五花八门的功能让我眼花缭乱。 把它们买回家后

    06-18

  • 佳兆业集团今年一季度销售额约308.44亿元,上升2位

    佳兆业集团今年一季度销售额约308.44亿元,上升2位

    佳兆业集团今年3月合约销售额7500万元(人民币,下同),同比增长约0.6% -同比;单月合同施工面积约79.83万平方米,同比增长约0.7%。

    06-18

  • 不只是游戏,任天堂发布“新款掌上游戏机”,塞尔达粉丝狂欢?

    不只是游戏,任天堂发布“新款掌上游戏机”,塞尔达粉丝狂欢?

    6月16日午夜,任天堂召开E3直面会。 虽然我们没有等到传说中的“Switch Pro”,但《老人》还是给我们带来了很多惊喜。 最大的新闻当然是关于大英雄“林克”。 任天堂在直面会上公布了《塞尔达传说:旷野之息》续作(以下简称《旷野之息》)的第二弹PV,并宣布该游戏将于2020年

    06-21

  • 工信部、网信办:到2025年,区块链工业实力将达到世界先进水平

    工信部、网信办:到2025年,区块链工业实力将达到世界先进水平

    创头条获悉,6月7日,工信部、网信办发布《关于加快推动区块链技术应用和产业发展的指导意见》。 文件提出,到2020年,区块链工业综合实力达到世界先进水平,产业初具规模。 区块链应用已渗透到经济社会多个领域,在产品追溯、数据流通、供应链管理等领域培育出一批知名产品

    06-18

  • 财色双收 既能看仲基又能抢红包的神器快无边界vivo Xplay5

    财色双收 既能看仲基又能抢红包的神器快无边界vivo Xplay5

    让你看仲基抢红包的神器,速度快,无国界。 vivo有用户懒得弯腰去捡50毛钱,但可以在微信群里为0.01元红包争论。 不得不佩服微信对用户需求和用户心理的准确把握。 因此,各种抢红包策略、插件或程序也被开发出来,但策略总是有条件的,不能随时应用;插件对于账号来说非常不

    06-18