K8s——配置管理(2)

k8s关于pod的metadata、spec.containers、spec.volumes的属性介绍(yaml格式) 一.metadata常用属性 二.spec.containers子属性介绍 explain pod.spec.containers给出的参考 1.command示例 2.env和envFrom示例 3.ports部分详解 4.resources部分详解 5.startupProbe格式 6.terminationMessagePath和terminationMessagePolicy格式 7.volumeDevices格式 8.volumeMounts格式 三.spec.volumes子属性介绍 阅读详情

目录

ConfigMap限制

一、数据大小限制

二、数据类型与安全限制

三、使用方式约束

四、命名空间与资源隔离

五、替代方案与最佳实践

总结

env From&value From环境变量部署

‌1. 创建示例 ConfigMap‌

‌2. 通过 valueFrom 注入单个变量‌

‌3. 通过 envFrom 批量注入所有变量‌

‌4. 混合使用两种方式‌

‌5. 验证环境变量‌

‌核心差异总结‌

‌注意事项‌

 解决挂载覆盖

‌1. 问题背景:挂载覆盖现象‌

‌2. 解决方案:subPath 精准挂载‌

‌逐行解析‌:

‌3. 完整操作流程示例‌

‌步骤1:创建包含配置文件的 ConfigMap‌

‌步骤2:部署使用 subPath 的 Pod‌

‌步骤3:验证效果‌

‌4. 关键注意事项‌

‌5. 对比普通挂载与 subPath‌

‌总结‌


ConfigMap限制

一、数据大小限制

  1. ‌最大 1 MiB(1,048,576 字节)‌

    • etcd 底层存储的限制导致单个 ConfigMap 容量不可超过此阈值‌。
    • ‌影响场景‌:大型配置文件(如日志规则、复杂路由配置)需拆分为多个 ConfigMap 或改用持久化存储卷‌。
  2. ‌行数无明确限制但受容量约束‌

    • 虽然 Kubernetes 未直接限制行数,但文件行数增加会快速耗尽 1 MiB 配额‌。
    • ‌规避方案‌:精简配置内容或使用外部配置中心(如 Consul)‌。

二、数据类型与安全限制

  1. ‌仅支持明文字符串‌

    • 所有数据(包括数字、JSON)需转为字符串格式存储‌。
    • ‌敏感数据处理风险‌:
      • ConfigMap ‌不加密数据‌,任何拥有 API 访问权限的用户可读取内容‌。
      • 机密信息(密码、密钥)必须使用 ‌Secret‌ 对象(支持 base64 编码)‌。
  2. ‌内存存储机制‌

    • ConfigMap 数据存储在集群节点的内存中而非磁盘,依赖 Kubernetes RBAC 保障安全‌。

三、使用方式约束

  1. ‌环境变量注入的不可变性‌

    • 通过 envFrom 或 valueFrom 注入的环境变量‌仅在 Pod 启动时加载‌,运行时修改 ConfigMap 需重启 Pod 生效‌。
  2. ‌文件挂载的动态更新与副作用‌

    • ‌支持热更新‌:kubelet 定期(默认 1 分钟)同步 ConfigMap 变更到容器文件系统‌。
    • ‌覆盖风险‌:挂载到容器目录时会‌清空该目录原有文件‌,需确保路径为空或使用子路径挂载‌。
    • ‌应用适配要求‌:需实现配置重载逻辑(如 Nginx 的 nginx -s reload)‌。
  3. ‌多 ConfigMap 引用复杂度‌

    • 单个 Pod 需引用多个 ConfigMap 时,必须声明多个 Volume 并分别挂载‌。
    • ‌示例配置‌:
      volumes:
       - name: config-volume-1
         configMap: {name: config1}
       - name: config-volume-2
         configMap: {name: config2} 

四、命名空间与资源隔离

  1. ‌命名空间作用域‌

    • ConfigMap 仅能被同命名空间的 Pod 引用,跨命名空间需复制或使用全局方案(如 ClusterSecret)‌。
  2. ‌资源命名冲突‌

    • 同一命名空间内 ConfigMap 名称必须唯一,建议采用 应用名-配置类型 格式(如 redis-server-config)‌。

五、替代方案与最佳实践

‌限制类型‌‌规避方案‌‌适用场景‌
大文件存储 (>1MiB)挂载持久化卷 (PVC) 或 GitRepo 同步数据库配置、静态资源
敏感数据存储使用 Secret 或第三方加密方案 (HashiCorp Vault)密码、API 密钥
跨命名空间共享自动化复制工具 (如 kubed)多环境统一配置

💡 ‌关键建议‌:

  • 对频繁更新的配置,优先选择‌文件挂载‌而非环境变量‌。
  • 通过 optional: true 标记避免 ConfigMap 不存在时阻塞 Pod 启动‌。
  • 结合 ‌ConfigMap 版本化‌(如 Helm 模板)实现配置回滚‌。

总结

ConfigMap 虽简化了配置管理,但需警惕四大核心限制:

  1. ‌数据容量‌(1 MiB)→ 拆分或外部存储
  2. ‌安全缺陷‌(明文存储)→ 敏感数据用 Secret
  3. ‌更新机制差异‌(环境变量 vs 文件挂载)→ 按需选择注入方式
  4. ‌隔离性‌(命名空间绑定)→ 跨 NS 同步方案‌

env From&value From环境变量部署

‌1. 创建示例 ConfigMap‌

首先准备一个包含键值对的 ConfigMap:

kubectl create configmap app-config \
 --from-literal=DB_HOST=mysql-prod \
 --from-literal=LOG_LEVEL=info \
 --from-literal=CACHE_ENABLED=true 
  • ‌--from-literal‌:直接定义键值对,此处创建了数据库地址、日志级别和缓存开关三个配置项。

‌2. 通过 valueFrom 注入单个变量‌

在 Pod 定义中引用 ConfigMap 的特定键值:

apiVersion: v1 
kind: Pod 
metadata:
 name: myapp-pod 
spec:
 containers:
   - name: myapp-container
     image: nginx
     env:
       - name: DATABASE_HOST # 容器内环境变量名
         valueFrom:
           configMapKeyRef:
             name: app-config # 引用的 ConfigMap 名称
             key: DB_HOST # ConfigMap 中的键名
             optional: false # 若为 true,ConfigMap 不存在时 Pod 仍能启动 
  • ‌逐行解析‌:
    • env:定义容器环境变量列表。
    • valueFrom.configMapKeyRef:指定从 ConfigMap 获取值。
    • optional:建议生产环境设为 false 避免配置缺失导致异常。

‌3. 通过 envFrom 批量注入所有变量‌

将 ConfigMap 中所有键值对注入为环境变量:

apiVersion: v1 
kind: Pod 
metadata:
 name: myapp-pod-bulk 
spec:
 containers:
   - name: myapp-container
     image: nginx
     envFrom:
       - configMapRef:
           name: app-config # 引用的 ConfigMap 名称
           optional: true # 允许 ConfigMap 不存在 
  • ‌逐行解析‌:
    • envFrom:批量注入来源(支持 ConfigMap 和 Secret)。
    • configMapRef:引用 ConfigMap 全部数据,键名直接作为容器变量名(如 DB_HOST)。
    • ‌注意‌:若键名不符合环境变量命名规则(如含 -),Kubernetes 会自动跳过。

‌4. 混合使用两种方式‌

组合使用 envFrom 和 value 实现灵活配置:

envFrom:
 - configMapRef:
     name: app-config 
env:
 - name: FORCE_DEBUG # 覆盖 ConfigMap 中的 LOG_LEVEL
   value: "debug"
 - name: EXTERNAL_API_URL # 追加额外变量
   value: "https://api.example.com" 
  • ‌关键行为‌:
    • env 中定义的变量会覆盖 envFrom 的同名变量。
    • 适合需要动态调整部分配置的场景。

‌5. 验证环境变量‌

部署后检查容器内变量是否生效:

kubectl exec myapp-pod -- env | grep -E 'DB_HOST|LOG_LEVEL' 
  • 预期输出:
    DB_HOST=mysql-prod 
    LOG_LEVEL=info 

‌核心差异总结‌

‌特性‌valueFromenvFrom
‌注入范围‌单个变量ConfigMap 全部键值对
‌变量名控制‌可自定义容器内变量名直接使用 ConfigMap 键名
‌适用场景‌需选择性引用部分配置快速注入全部配置
‌覆盖能力‌优先级高于 envFrom 的同名变量可被 env 显式定义覆盖

‌注意事项‌

  1. ‌命名冲突‌:若多个 ConfigMap 通过 envFrom 注入同名键,后加载的会覆盖前者。
  2. ‌敏感数据‌:避免用 ConfigMap 存储密码,改用 Secret。
  3. ‌动态更新‌:环境变量注入后‌不可更新‌,需重建 Pod 生效。

 解决挂载覆盖

‌1. 问题背景:挂载覆盖现象‌

当直接将 ConfigMap 挂载到容器的‌非空目录‌时,Kubernetes 会清空该目录下所有原有文件,仅保留 ConfigMap 中的内容。例如:

volumeMounts:
 - name: config-volume
   mountPath: /etc/nginx # 若此目录已存在文件,会被完全覆盖 

‌2. 解决方案:subPath 精准挂载‌

通过 subPath 指定挂载 ConfigMap 中的‌单个文件‌,避免覆盖整个目录:

apiVersion: v1 
kind: Pod 
metadata:
 name: nginx-with-subpath 
spec:
 containers:
   - name: nginx
     image: nginx
     volumeMounts:
       - name: config-volume
         mountPath: /etc/nginx/nginx.conf # 容器内目标文件路径
         subPath: nginx.conf # 仅挂载 ConfigMap 中的此文件
     volumes:
       - name: config-volume
         configMap:
           name: nginx-config # 引用的 ConfigMap
           items:
             - key: nginx.conf # ConfigMap 中的键名
               path: nginx.conf # 挂载后的文件名(可重命名) 
‌逐行解析‌:
  1. ‌volumeMounts.subPath‌

    • 指定从 ConfigMap 中提取的文件名(如 nginx.conf),而非挂载整个 ConfigMap。
    • ‌效果‌:仅将指定文件挂载到 mountPath,不影响目录其他文件。
  2. ‌volumes.configMap.items‌

    • key: ConfigMap 中定义的键名(需与文件内容对应)。
    • path: 挂载到容器后的文件名(可重命名,如 custom.conf)。

‌3. 完整操作流程示例‌

‌步骤1:创建包含配置文件的 ConfigMap‌
# 创建本地配置文件 
echo "worker_processes 4;" > nginx.conf 

# 生成 ConfigMap 
kubectl create configmap nginx-config --from-file=nginx.conf 
‌步骤2:部署使用 subPath 的 Pod‌

nginx-subpath.yaml


apiVersion: v1
kind: Pod
metadata:
  name: nginx-subpath-demo
spec:
  containers:
    - name: nginx
      image: nginx
      volumeMounts:
        - name: config-vol
          mountPath: /etc/nginx/nginx.conf  # 覆盖默认配置
          subPath: nginx.conf               # 关键:避免覆盖整个目录
  volumes:
    - name: config-vol
      configMap:
        name: nginx-config
‌步骤3:验证效果‌
# 进入容器查看文件 
kubectl exec nginx-subpath-demo -- ls /etc/nginx/ 
# 输出应包含 nginx.conf 和其他默认文件(如 conf.d/) 

# 检查配置内容 
kubectl exec nginx-subpath-demo -- cat /etc/nginx/nginx.conf 
# 输出应为 "worker_processes 4;" 

‌4. 关键注意事项‌

  1. ‌动态更新限制‌

    • 修改 ConfigMap 后,使用 subPath 挂载的文件‌不会自动更新‌,需重启 Pod 或重建 Deployment‌1。
  2. ‌路径冲突风险‌

    • 若 mountPath 指定的文件已存在,subPath 会直接覆盖该文件(不提示警告)。
  3. ‌多文件管理‌

    • 每个文件需单独声明 subPath,适合少量关键配置,大量文件建议改用完整目录挂载+配置模板工具(如 Helm)。

‌5. 对比普通挂载与 subPath‌

‌场景‌普通挂载使用 subPath
‌目录原有文件‌被清空保留其他文件
‌更新传播‌自动同步(约1分钟)需手动重启 Pod
‌适用场景‌需要完全控制目录内容需保留目录结构并插入个别配置

‌总结‌

subPath 是解决 ConfigMap 挂载覆盖的精准方案,适用于:

  • 修改容器内‌单个配置文件‌(如 Nginx/Apache 的主配置)。
  • 保护目录中其他重要文件(如证书、脚本)。
  • 需与现有文件共存的场景。

但需注意其‌无法动态更新‌的特性,必要时可通过滚动更新 Deployment 触发配置重载。

Kubernetes ConfigMap在envFrom变量、env/valueFrom与Volume挂载中的热更新测试与实践 ConfigMap是Kubernetes中一个关键的配置管理资源,它使得配置文件和参数的管理与容器化应用解耦,从而实现配置的动态调整与应用的无缝更新。通过ConfigMap,开发者可以将配置数据存储在Kubernetes集群中,供应用在运行时访问和使用。在实际应用中,ConfigMap的更新常常是不可避免的,而如何保证这些更新能够快速且无缝地反映到应用中,成为了一个关键问题。特别是在Env变量和Volume挂载的场景中,ConfigMap的热更新机制是否能够顺利应用,直接影响到系统的稳定性与灵活性。 阅读详情

相关推荐

2.2 K8s 配置管理:ConfigMap、Secret 与健康检查的生产级实践

本文介绍了Kubernetes配置管理的最佳实践,包括ConfigMap、Secret和健康检查机制。主要内容: ConfigMap:实现配置与镜像解耦,支持环境变量注入和文件挂载两种方式,其中文件挂载支持热更新。介绍了三种实现热更新的方法:应用原生支持、Sidecar监听和Reloader Operator(推荐)。 Secret安全使用:强调Base64不是加密,必须配合RBAC控制、加密存储和不落盘等安全措施。 健康检查:详细说明三种探针(Liveness、Readiness、Startup)的区别和

yonggeit的博客 4050

k8s-配置管理

configmap Configmap 是 k8s 中的资源对象,用于保存非机密性的配置的,数据可以用 key/value 键值对的形式保存,也可通过文件的形式保存。通过挂载到容器中使用。 多用于配置文件,将 configMap 做为存储卷,或则是将configMap 通过 env 中 configMapKeyRef 注入到容器中。 缺点:configmap保存的数据大小不能超过1MiB 创建方法: 命令创建 # 通过帮助命令查看创建例子 kubectl create configmap

栋院 5480

Spring Cloud 与 K8s 的微服务设计

上面说到SpringBoot2.x可以结合K8s来作为微服务的架构设计,那么就先来说下K8s的一些组件吧。ConfigMap,看到这个名字可以理解它是用于保存配置信息的键值对,可以用来保存单个属性,也可以保存配置文件。对于一些非敏感的信息,比如应用的配置信息,则可以使用ConfigMap。创建一个ConfigMap有多种方式如下。1.key-value字符串创建2.根据yml描述文件创建apiVersionv1kindConfigMapmetadata。...

m0_67322837的博客 364

第8章 K8s基础篇-配置管理

k8s配置管理ConfigMap和Secret

dluhehe的博客 1829

ROS2上云实战:IBM Cloud Kubernetes容器化部署指南

ROS2作为工业级机器人操作系统,其生产化部署面临实时性、可扩展性与跨环境一致性挑战。Kubernetes凭借声明式编排、自动扩缩容和强隔离能力,成为ROS2云原生落地的核心底座;而IBM Cloud Kubernetes Service(IKS)依托CNCF认证、混合云就绪架构及企业级安全合规能力,为ROS2提供高可靠运行环境。本文聚焦ROS2节点容器化封装、K8s原生服务发现替代DDS、Helm驱动的微服务编排,以及Ingress赋能的Web端RViz2远程可视化等关键技术路径,系统解决ROS2从本地开

weixin_34327761的博客 795

告别命令行恐惧:用Rancher 2.5.11的图形界面,5分钟搞定你的第一个K8s应用部署

本文介绍了如何使用Rancher 2.5.11的图形界面快速部署Kubernetes应用,告别复杂的命令行操作。通过详细的实战指南,帮助开发者在5分钟内完成从集群绑定到应用部署的全流程,大幅降低K8s的学习门槛。Rancher的界面管理功能让Kubernetes操作变得简单直观,适合初学者和团队快速上手。

weixin_30376083的博客 400

Kubernetes 配置管理

ConfigMap 是 Kubernetes 提供的一种 API 对象,用于在键值对数据库(etcd)中存储非加密的配置数据。它的核心设计目标是将应用配置与 Pod、容器解耦,使配置能够独立于工作负载进行管理和更新。例如,Nginx 的nginx.conf、Redis 的redis.conf等配置文件,均可通过 ConfigMap 存储,再挂载到容器中使用。这种方式避免了配置与镜像的绑定,使同一镜像能在不同环境中通过切换 ConfigMap 实现差异化部署。

2401_84100398的博客 1214

Apache SeaTunnel 2.3.10在K8s上的分离集群模式实战:从Hazelcast配置到任务提交全流程

本文详细解析了在Kubernetes上部署Apache SeaTunnel 2.3.10分离集群模式的完整流程。核心在于通过配置Headless Service和Hazelcast实现集群节点的自动发现与通信,并提供了从Master/Worker部署到任务提交的实战指南,帮助用户构建稳定、可弹性伸缩的数据管道。

weixin_29306261的博客 62

Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置

无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。

阿里巴巴云原生的博客 1666

K8S中的环境变量

K8S中的环境变量

叱咤少帅的博客 1535

D3作业2:K8s配置管理与镜像构建实验手册(实验5-6)

使用场景推荐方式说明配置文件Volume挂载支持热更新(需重启Pod)环境变量envFrom批量导入,简洁高效命令行参数结合env使用灵活性高敏感信息使用SecretConfigMap不加密大文件不推荐ConfigMap限制1MB。

cool3200的博客 76

rancher2.6.4配置管理k8s,docker安装

docker logs [rancher容器container-id] 2>&1 | grep “Bootstrap Password:”2、启动rancher 启动很慢 --privileged必须拥有root权限,并挂载卷。docker快速安装rancher并管理当前k8s集群。等待验证api直到集群状态为 Active。5、输入密码登录后自动会生产新登录密码。4、登录rancher查看默认密码。6、导入现有的k8s。

yxt625520的博客 489

深入解析Docker Overlay2磁盘空间占用问题及高效清理策略

本文深入解析了Docker Overlay2存储驱动导致磁盘空间占用的核心原因,包括镜像与容器残留、日志文件膨胀、应用层泄漏及驱动特性。提供了从全局检查到精准定位的完整排查方法,并给出了从常规清理到配置优化的多维度高效清理策略,帮助用户从根本上解决Docker磁盘空间问题。

data3的博客 900

3-2-5、k8s学习-pod的配置管理

containersname:容器名称。image:镜像地址(如nginx:1.23:容器启动命令与参数,覆盖镜像默认配置。env:环境变量,支持字面量或从 ConfigMap/Secret 注入。resources:资源限制与请求(requestslimits),如:yamlresources:requests:limits:cpu: "1":存活 / 就绪探针,支持httpGetexectcpSocket三种检测方式。

xuebo1129927648的博客 91

深入解析西门子S7通信协议:从抓包到实战应用

本文深入解析西门子S7通信协议,从环境搭建、抓包分析到实战应用,提供了一套完整的协议分析方法。通过Wireshark工具进行抓包分析,详细拆解了S7协议各层结构,并结合真实案例,展示了如何利用抓包技术解决通信故障、优化性能及进行安全审计,是掌握工业通信底层原理的实用指南。

weixin_29224529的博客 281

炸金花游戏(3)--基于EV(期望收益)的简单AI模型

前言:   炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章:  德州扑克AI--Programming Poker AI(译).  系列文章说来惭愧, 之前一直叫嚷着写德州AI, 不过可惜懒癌晚期, 一直没去实践, T_T. 相比而言,***简单很多, 也更偏重于运...

weixin_30377461的博客 2340

docker的Kubernetes(k8s)集群搭建

安装与启动docker 安装包下载,提取码ggc9 server1:172.25.16.1(k8s-master) server2:172.25.16.2(k8s-node1) server3:172.25.16.3(k8s-node2) 清理swarm的服务,没有搭建可以跳过 server2和3 docker swarm leave docker container prune server1...

qwefyjwww的博客 481

双斜率积分ADC:高精度测量中的经典选择与TC530/TC534实战指南

模数转换器(ADC)是连接模拟世界与数字系统的关键桥梁,其核心任务是将连续的模拟信号转换为离散的数字量。在众多ADC类型中,双斜率积分ADC以其独特的原理脱颖而出,它通过积分与反积分的线性过程,用时间换取精度,实现了对噪声的卓越抑制和极高的线性度。这种技术价值使其在对抗工频干扰、追求长期稳定性的场景中无可替代,尤其适用于精密测量仪表和工业传感器信号采集。本文聚焦于双斜率积分ADC的经典代表TC530与TC534,深入剖析其工作原理、关键参数如积分电阻、积分电容的选择,并提供从硬件电路设计到软件驱动的完整实战

weixin_30847063的博客 358

Kubernetes 管理新纪元:利用 GitOps 搭建您的家用 Kubernetes 集群

Kubernetes 管理新纪元:利用 GitOps 搭建您的家用 Kubernetes 集群 项目介绍 天使努(angelnu)的k8s-gitops是一个基于GitOps理念管理家庭级Kubernetes集群的项目。它通过Flux v2实现集群状态与Git仓库的同步,确保基础设施即代码的最佳实践。这个高度定制化的方案部署在Proxmox虚拟环境中,利用K3S构建一个多架构、高可用的集群。核心特...

gitblog_00264的博客 449

Graylog日志系统实战:高效接收与解析交换机日志

本文提供Graylog日志系统的实战部署与配置指南,重点讲解如何高效接收与解析交换机日志。通过Docker快速部署,配置Syslog输入,并指导华为、华三等主流交换机将日志发送至Graylog。文章还介绍了使用提取器解析日志字段、创建数据流进行分类,以及设置报警规则,实现从被动排查到主动预警的运维转变,帮助网络工程师构建集中、智能的日志管理系统。

weixin_29284885的博客 540

30 中望CAD二次开发(ZRX C++)-windows下的qt开发

本文介绍了中望CAD在windows下,如何使用qt开发插件界面,给出了具体的编码步骤,并生成了模态对话框和非模态对话框,其中非模态对话框可以调用CAD命令,实现交互操作。

cilvsuanna的博客 189

TensorFlow-v2.15云原生部署:Docker+K8s整合实战教程

本文介绍了在星图GPU平台上自动化部署TensorFlow-v2.15镜像的云原生实践。该平台简化了从Docker容器化到Kubernetes集群编排的完整流程,使开发者能够快速构建高可用、可扩展的AI模型服务,典型应用于在线图片分类或商品推荐等实时推理场景。

weixin_36173034的博客 324

最近腾讯手机管家a.gray.Bulimia.a病毒提示决解方案

仅供参考(个人问题已解决 未申诉) 用户反馈app提示病毒图如下 然后下载生产包去https://www.virustotal.com/gui/这个网站去检测 果真提示病毒 重新加版本 打了个包 未加固 检测没问有问题 同一个包用360加固之后再检测有问题 ,但是没有a.gray.Bulimia.a报病毒 然后再用应用宝加固检测也没问题,个人以前都是用360加固的,很尴尬啊 最重要的一点的是,更新一个版本号,其余的啥都没改,更新替换手机的原来版本app,腾讯手机.

村头那抠脚大叔的专栏 3万+
上一篇: K8s——配置管理(1)
下一篇: Volume
霖檬ing
博客等级 码龄2年 701粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值