K8S资源配置清单

k8s资源清单+控制器+service+实战项目实现 集群资源分布: 主要分为三种 名称级别分布 只在此名称级别下生效。例如k8s本身的系统组件是放在它本身的kube-system下的,因此我们在执行kubectl get pod -n default指令时就看不见系统本身的组件。 集群级别 不管在什么名称空间下,我在全局查询的过程中都可以看到,也就是说我们在定义的时候不指定集群,给他赋予一个全局访问的权限。 元数据型 给我们提供一个指标,通过指标进行操作 k8s中所有的内容都被抽象为资源,资源实例化以后,叫做对象 k8s中有哪些资源 名称空间级别: 工 阅读详情

在K8S中,K8S将所有的操作对象都当做资源来进行管理,K8S为我们提供了一个叫APIserver的组件,这个组件提供了一系列的RESTful风格的接口,通过这些接口就可以实现对资源的增删改查等操作。

而所谓的资源配置清单就是我们用来创建和管理资源的配置文件。在了解资源配置清单前,我们需要先了解一下K8S中有哪些资源。

一、资源类型

1、工作负载型资源

这些资源就是K8S中承载具体的工作的一些资源,常见的类型有:Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjon,...

2、服务发现及均衡型资源

这种类型的资源主要和服务相关,负责服务发现,调度等,常见的类型有:Service,Ingress,...

3、配置与存储相关资源:

这类型的资源主要和存储相关,常见类型有:Volume,CSI,ConfigMap,Secret,DownwardAPI,...

4、集群级资源

这类型资源主要提供集群的管理相关的功能,常见类型有:Namespace,Node,Role,ClusteRole,RoleBinding,ClusterRoleBinding

5、元数据型资源

这类型的资源主要提供元数据相关的功能,常见类型有:HPA,PodTemplate,LimitRange, ....

二、创建资源配置清单

K8S中的APIServer在创建资源时采用JSON格式的数据,我们可以通过使用yaml格式的配置文件来提供配置,然后K8S内部自动帮我们转换为JSON格式,然后再提交。

资源配置清单关键字, 在一个配置清单中,有五个一级字段及多个下级字段组成,我们先来看下这几个一级字段:

1. apiVersion:[group]/version

APIServer使用分组来管理api,在创建资源配置清单的时候要指定此api属于哪个组,属于core组的资源,在定义时可以省略组名,使用kubectl api-server命令可以来获取api版本。

2、kind:资源类型

kind字段用来指定要管理的资源类型,资源类型如上所述。

3、metadata:元数据

metadata字段用来指定部分元数据,其有多个二级字段:

            name:资源名称,在同一个类别中这个名称必须是唯一的

            namespace:名称空间,资源所属的名称空间

            labels:标签,每个标签都是一对键值对,一个资源可以拥有多个标签,一个标签也可以对应多个资源。标签可以在资源创建时指定,也可以在资源创建之后来管理标签。

            标签定义格式:key=value,键名和键值最长长度为63个字符,其中:

                key:由字母、数字、_、-、.组成,必须以字母开头

                value:可以为空,只能以字母或数字开头或结尾,中间可以使用_、-、.
kubectl get pods --show-labels    # 查看pods资源时显示标签
kubectl get pods -l app           # 查看拥有app标签的pods资源
kubectl label pod pod-demo release=canary              # 给名为pod-demo的pod资源新增一个标签release=canary
kubectl label pod pod-demo release=stable --overwrite  # 修改pod-demo的release标签release=stable,不加--overwrite会报错

在K8S中,通过标签选择器来筛选资源,其中,标签除了可以指定具体的键值外,还有如下类型:

等值关系:=,==,!=,集合关系:

KEY in (value1,value2,...) :KEY键值在某些集合中
KEY notin (value1,value2,...):KEY键值不在某些集合中
KEY: 存在键KEY
!KEY: 不存在键KEY

annotations:注解,其与label不同的地方在于,它不能用于挑选资源对象,仅用于为对象提供元数据,其键和值没有长度限制

4、spec:规则字段

spec字段用于定义用户期望的状态,在这个字段下有多个二级字段,用于定义容器相关期望状态等,接下来我们将介绍部分字段。

spec
  containers:指定容器相关配置,此字段是必填的,部分二级字段如下:
  - name:容器名称
    image:启动容器的镜像
    imagePullPolicy: 拉取镜像策略,其有三个值可选:Always | Never | IfNotPresent
  Always: 表示无论本地是否有镜像文件,每次创建资源时都去镜像仓库中拉取镜像
  Never: 表示从不自动从镜像仓库中拉取镜像,启动时需要手动拉取镜像到本地
  IfNotPresent: 表示如果本地有镜像时就使用本地镜像,本地没有时就自动去拉取
  当不指定此配置时,如果镜像标签是 :latest 的时候,默认采用Always的方式拉取镜像,否则默认采用IfNotPresent方式拉取镜像。
    ports:容器暴露的端口信息。在此处暴露端口可为系统提供有关容器使用的网络连接的信息,但仅仅是参考信息。如果在此处没有指定端口,也并不能保证容器没有暴露端口。任何监听容器中“0.0.0.0”地址的端口都可以被访问到。其下级还有如下字段:
    - name:暴露端口的名字
      containerPort:必填字段,暴露的容器端口号
      protocol:协议栈,默认TCP协议,可选UDP,TCP,SCTP
    command:容器运行的命令,用来指定替换容器默认的命令,command相当于Dockerfile中的Entrypoint,如果不指定该参数,那么就会采用镜像文件中的ENTRYPOINT指令。
    args:entrypoint指令的参数列表,如果不指定这个参数,则使用镜像中的CMD指令
      ** command和args参数分别对应镜像中的ENTRYPOINT和CMD指令,此时就出现如下几种情况:
      a、command和args都未指定:运行镜像中的ENTRYPOINT和CMD指令
      b、command指定而args未指定:只运行command指令,镜像中的ENTRYPOINT和CMD指令都会被忽略
      c、command未指定而args指定:运行镜像中的ENTRYPOINT指令且将args当做参数传给ENTRYPOINT指令且镜像中的CMD指令被忽略
      d、command和args都指定:运行command指令,并把args当做参数传递给command,镜像中的ENTRYPOINT和CMD指令都会被忽略
    livenessProbe:POD容器存活状态监测,检测探针有三种,ExecAction、TCPSockerAction、HttpGetAction
      exec:命令类型探针
      command:执行的探测命令,命令运行路径是容器内系统的/,且命令并不会运行在shell中,所以,需要我们手动指定运行的shell,当命令返回值是0时表示状态正常,反之表示状态异常
      httpGet:http请求型探针
        host:请求的主机地址,默认是POD IP
        httpHeaders:HTTP请求头
        path:请求的URL
        port:请求的端口,必填项
        scheme:请求协议,默认是http
      tcpSocket:TCP socket型探针
        host:请求的主机地址,默认是POD IP
        port:请求的端口号,端口范围是1-65535
        failureThreshold:连续错误次数,默认3次,即默认连续3次检测错误才表示探测结果为异常
        successThreshold:连续成功次数,默认1次,即当出现失败后,出现连续1次检测成功就认为探测结果是正常
        periodSeconds:探测时间间隔,默认10秒
        timeoutSeconds:探测超时时间,默认1秒
        initialDelaySeconds:起始探测时间间隔,表示pod启动后,该间隔之后才开始进行探测
    readinessProbe:主容器内进程状态监测,其可用的检测探针类型和livenessProbe是一致的
        此检测和service调度有很强的关联性,
        当新调度一个pod时,如果没有指定就绪性检测,此时一旦pod创建就会立即被注册到service的后端
        如果此时pod内的程序尚无法对外提供服务,就会造成部分请求失败
        所以,我们应该让一个pod在注册到service中区之前,已经通过了可用性检测,保证可以对外提供服务
    lifecycle:生命周期钩子方法
      postStart:容器启动后执行的命令,可用检测探针和livenessProbe是一致的
      preStop:容器启动前执行的命令
  restartPolicy:重启策略,Always, OnFailure,Never. Default to Always.
  nodeSelector:node选择器,可以根据node的标签选择POD运行在某些指定的node上
  nodeName:使pod运行在指定nodeName的节点之上

5、status:状态字段

status字段描述了当前状态信息,本字段由k8s集群维护

资源配置清单有很多字段,无法一一介绍,K8S也为我们提供了查看这些字段的命令:kubectl explain 资源类别[.字段名],此命令可以为我们提供当前资源类别的定义方式,如果需要知道具体的某一个字段如何定义,可以使用kubectl explain资源类别.字段名,如:

[root@k8s7-22 ~]# kubectl explain pod.metadata.clusterName
KIND:     Pod
VERSION:  v1

FIELD:    clusterName <string>

DESCRIPTION:
     The name of the cluster which the object belongs to. This is used to
     distinguish resources with same name and namespace in different clusters.
     This field is not set anywhere right now and apiserver is going to ignore
     it if set in create or update request.

三、编写一个自定义配置清单

有了上述的介绍,我们来自己编写一个自定义配置清单,然后根据这个配置清单启动一个pod资源

[root@k8s7-200 manifests]# pwd
/data/k8s-yaml/manifests
[root@k8s7-200 manifests]# cat pod-demo.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo                               # pod名称
  namespace: default                           # pod资源所属的namespace
  labels:                                      # 标签
    app: myapp
    tier: frontend
spec:
  containers:                                  # 定义容器
  - name: myapp                                # 启动第一个容器,名为myapp
    image: harbor.od.com/public/myapp:v1       # 启动容器需要使用的镜像文件
  - name: busybox                              # 启动第二个容器为busybox
    image: harbor.od.com/public/busybox:latest # 第二个容器的镜像
    command:                                   # 自定义在第二个容器中执行的命令
    - "/bin/sh"
    - "-c"
    - "sleep 3600"

然后使用这个资源配置清单来创建资源,我们的资源配置清单可以放在服务器本地,也可以放在资源站上,创建的时候直接指定这个资源配置清单的URL即可:

[root@k8s7-22 ~]# kubectl create -f http://k8s-yaml.od.com/manifests/pod-demo.yaml
pod/pod-demo created

此时,就根据这个资源配置清单去创建资源了,如果创建资源时报错,那么我们可以使用如下信息来查看具体的报错信息:

[root@k8s7-22 ~]# kubectl describe pod pod-demo

k8s资源清单 k8s中集群资源分类            在kubernetes中,所有控制器,组件等都称为资源。 名称空间级别资源:仅在此名称空间下生效。 集群级别资源:全集群可见可调用。 元数据型:可以通过指标进行操作。 工作负载型资源:pod,rs,deployment,statefulset,da... 阅读详情

相关推荐

手写Kubernetes资源配置清单:从YAML到Pod实战全解析

在云原生与容器编排领域,声明式API已成为基础设施管理的核心思想。不同于命令式操作的一次性执行,声明式配置通过YAML清单描述期望状态,由控制器持续调和实际状态,从而实现版本化、可评审、可复用的自动化运维。Pod作为Kubernetes最小的调度单元,其资源配置清单涵盖apiVersion、kind、metadata、spec等关键字段,并需精细处理容器镜像、资源限额、探针与命名空间等细节。理解这些基础原理,不仅能在生产环境稳定部署服务,还能高效排查ImagePullBackOff、CrashLoopBac

weixin_33785108的博客 794

Kubernetes的Pod生命周期

一、Pod生命周期 Pod对象自从创建开始至终止退出的时间范围称为生命周期,在这段时间中,Pod会处于多种不同的状态,并执行一些操作。其中,创建主容器为必须的操作,其他可选的操作包括运行初始化容器(init container)、容器启动后钩子(start hook)、容器的存活性探测(liveness probe)、就绪性探测(readiness probe)以及容器终止前钩子(pre stop hook)等,这些操作是否执行则取决于Pod的定义。 以下是k8s的生命周期示意图: 二、Init容器 1、

u013928820的博客 579

6.1 K8sGPT诞生记:如何让AI自动生成Kubernetes资源配置清单

本文介绍了如何利用大语言模型(LLM)开发K8sGPT工具,实现AI自动生成Kubernetes资源配置清单。Kubernetes配置的复杂性体现在YAML语法繁琐、API版本众多等方面,传统手工编写存在学习曲线陡峭、容易出错等问题。K8sGPT系统通过LLM的自然语言理解能力、提示工程技术和配置验证机制,实现了从自然语言描述到有效Kubernetes配置的自动转换。文章详细阐述了系统架构设计和核心实现,包括基础框架构建、LLM集成以及交互式命令行工具的开发。该系统能显著降低Kubernetes使用门槛,提

yonggeit的博客 3490

k8s 资源清单

目录 1.资源 1.1在k8s中的资源分类 1.2、资源清单 2.资源清单的使用 2.1、构建资源清单 2.2 imagePullPolicy: IfNotPresent 与containerPort 2.3、resources资源限制 2.4 重启策略restartPolicy 2.5、nodeSelector 2.6、hostNetwork主机网络模式 1.资源 k8s中所有的内容都抽象为资源,资源实例化之后,叫做对象。 1.1在k8s中的资源分类 工作负载型资..

weixin_60551759的博客 3706

从Gotham到Foundry:一文读懂Palantir三大产品线(Gotham/Foundry/Apollo)的核心差异与适用场景

本文深度解析Palantir三大产品线Gotham、Foundry和Apollo的核心差异与适用场景。Gotham专为国防与情报设计,提供军事级安全分析;Foundry是企业数字化转型的通用平台,支持低代码开发;Apollo则是云原生基石,确保系统可靠运行。通过对比产品架构与典型应用,帮助技术决策者根据需求做出明智选择。

weixin_42524499的博客 841

Python多进程实战:用BaoStock高效下载股票历史数据的5个优化技巧

本文详细介绍了使用Python多进程技术通过BaoStock高效下载股票历史数据的5个优化技巧。从理解BaoStock的数据获取机制到进程池配置、智能任务分片、异常处理及性能监控,帮助开发者显著提升数据下载效率,特别适合量化交易领域的数据采集需求。

weixin_30369041的博客 458

Kubernetes-资源清单

在 k8s 中,一般使用 yaml 格式的文件来创建符合我们预期期望的 pod ,这样的 yaml 文件我们一般称为资源清单。资源实例化成对象,描绘中间这个过程,这个文件都叫资源清单。资源清单不一定都是yaml模式,也可以是json格式

刘某的博客 1611

【k8s面试】超详细kubernetes面试题总结,面试必问!(附200道K8s Docker面试真题+答案详解

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

2401_83620959的博客 1465

k8s资源配置简单清单

k8s中大部分资源清单包含以下5个字段: 1.apiVersion : group/version [root@master ~]# kubectl api-versions 包含: admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 apps/v1beta1 apps/v1bet

lemontree0526的博客 573

VOSviewer文献可视化006:修改节点标签文字

由VOSviewer软件生成的可视化图形所显示的文字是小写的,有时候,我们希望其所显示的数据(如国家或作者的首字母等)能够以大写的方式呈现,这时可以进行对节点标签文字的修改操作,使图形显示我们想要的一个效果。

qq_41725964的博客 6152

ZEMAX学习 6.一个照相物镜的设计

曲线越平滑表示场曲越小,曲线越接近水平,系统边缘与中心对比度越接近,虚实越接近表示色差和色散越好;第1个面设计不合理,出现前后表面相交的情况,点击第1面厚度,选择边缘厚度,设置为0.1,第1面厚度被控制在0.1mm厚,系统根据这一设置始终保持第1面边缘厚度为0.1mm。要求:设计一个照相物镜,焦距f=9mm,F#为4,视场角40°;添加有效焦距操作数EFFL 9mm 权重为1,设置优化变量,如下图,ctrl+shift+o打开优化界面。报告中系统数据有效焦距为67.381mm,设计要求为9mm;

qq_24542783的博客 4711

【kubernetes】pod的资源配置清单

4.restartPolicy:定义了在容器停止时的重启策略,如“Always”(总是重启)、“OnFailure”(仅在失败时重启)或“Never”(从不重启)。1.定义:存储了Pod的运行状态,如Pod IP地址、容器状态、节点名称等。1.在Kubernetes中,Pod的资源配置清单是用于定义Pod的资源需求和限制的详细描述。1.定义:定义了Pod的具体规格或配置,包括容器的行为、资源需求、存储卷等。1.定义:Pod中容器的定义部分,包括容器名称、镜像、端口、资源限制等。

王佑辉的博客 998

RK3568平台(电源篇)电源域IO配置

在kernel之前需要修改电源域,主控电源域的IO电平要与对接外设芯片的IO电平匹配,还要注意软件的电压配置要跟硬件的电压一致,否则,最坏的情况可能会导致IO的损坏。其实就是管理 IO 输出的电平;假如硬件上 IO 电源域配置为 3.3V,则 IO 输出最大电平为 3.3V;同理 IO 电源域硬件配置为 1.8V,则 IO 输出最大电平是 1.8V;这样有利于 IO 电平的灵活配置;

weixin_49303682的博客 3478

Kubernetes详解(八)——Kubernetes资源配置清单

今天继续给大家介绍Linux运维相关知识,本文主要内容是Kubernetes的资源配置清单。 一、Kubernetes常用资源配置对象及格式 二、Kubernetes资源配置清单常用字段 三、Kubernetes资源配置清单常用字段查看

永远是少年 2459

华为OD机试新系统真题-谁没交卷(Java /Py/C++/Go/C/Js)

华为OD机试 新系统真题【谁没交卷】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【谁没交卷】多语言题解。

qq_45776114的博客 422

ROS从入门到精通2-1:机器人3D可视化工具——Rviz

本文详细介绍了Rviz是什么?为什么要使用这个工具?清晰地列出了Rviz的安装流程和界面的基本功能元素;讲解了Rviz基本数据类型与话题,并用两个实例深入理解Rviz数据可视化的过程

FRIGIDWINTER的博客 5346

Kubernetes资源配置清单的管理操作

Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式:主要用于 api 接口之间消息的传递 YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读

ll945608651的博客 631

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Kubernetes详解(九)——资源配置清单创建Pod实战

今天继续给大家介绍Linux运维相关知识,本文主要内容是通过资源配置清单方式创建Pod实战。 一、资源配置清单编写 二、资源配置清单创建Pod 三、镜像和Pod中的Command关系说明

永远是少年 1278

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Kubernetes资源配置清单完全指南:从YAML到声明式运维

在云原生与容器化快速普及的今天,Kubernetes已成为应用交付和运维的事实标准。而掌握资源配置清单,是理解整个Kubernetes生态的关键入口。所谓配置清单,本质上是基于YAML的声明式描述,它通过定义期望状态,让集群控制器不断调和实际状态,从而替代易漂移的命令式操作。从Deployment、Service到ConfigMap、Secret,每一类资源都承载着应用运行的核心需求。声明式配置带来版本化、可审计、可回滚的工程能力,也使得基础设施即代码在K8s中真正落地。无论是应用迁移、多环境部署,还是故障

weixin_33795743的博客 171

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

从YAML到Pod:Kubernetes资源配置清单的实战指南

在云原生与容器化技术快速普及的背景下,Kubernetes已成为分布式应用编排的事实标准。而理解如何通过声明式配置描述工作负载,是掌握集群管理的关键起点。资源配置清单以YAML为载体,将容器运行状态、资源需求、健康检查等要素转化为可版本化的代码,从而实现基础设施即代码(IaC)的工程理念。通过定义apiVersion、kind、metadata等基础字段,并精细配置containers、resources、探针等核心参数,运维人员可以构建出稳定、可观测、可回滚的应用交付流程。这种从命令行到清单文件的迁移,不

weixin_34367257的博客 323

k8s查看pod的yaml文件_K8S教程(6)YAML资源配置清单

一、K8S配置清单作用虽然使用kubectl或者dashboard都可以创建Pods,但在实际使用中基本都是使用yaml配置清单来对资源进行一个声明,然后K8S按照声明信息进行创建。对于K8S来说,它会将YAML配置清单中的内容自动转换成JSON格式,然后传送给API Server完成创建。二、创建YAML配置清单的办法1、导出已有的Pod为YAML格式kubectl get deployment...

weixin_39926739的博客 1万+

K8S教程(6)YAML资源配置清单

一、K8S配置清单作用 虽然使用kubectl或者dashboard都可以创建Pods,但在实际使用中基本都是使用yaml配置清单来对资源进行一个声明,然后K8S按照声明信息进行创建。对于K8S来说,它会将YAML配置清单中的内容自动转换成JSON格式,然后传送给API Server完成创建。 二、创建YAML配置清单的办法 1、导出已有的Pod为YAML格式 kubectl get deployment nginx-test -o yaml 2、使用dry-run干跑模式导出YAML ku

weixin_42073629的博客 413

k8s资源配置清单的书写格式(yaml文件)

yaml文件书写格式:5大类:apiVersion: 选择kubectl api-versions里面存在的版本kind: 选择kubectl api-resources结果中的对象资源metadata: 源数据,主要定义pod,service,等的名称,镜像来源,端口,暴露方式,数据卷挂载点目录等。spec: 用户(工程师)期望状态,一般工程师维护status: 当前状态,一...

weixin_30588827的博客 342

Docker&Kubernetes ❀ Kubernetes集群Service资源配置清单

文章目录1、基本概念1.1 Userspace模式1.2 Iptables模式1.3 Ipvs模式(推荐使用)2、服务类型2.1 服务类型3、服务使用方法3.1 环境准备3.2 ClusterIP类型3.2.1 Endpoint3.2.2 SessionAffinity3.3 Headless类型3.4 NodePort类型3.5 LoadBalancer类型3.6 ExternalName类型3.7 应用案例 1、基本概念 在Kubernetes中,Pod是应用程序的载体,我们可以通过Pod的IP来访问

无糖可乐没有灵魂 818

k8s中yaml文件的编写

方法1:根据现有资源导出yaml文件修改配置,重新创建只保留常用配置,删除多余的,配置,进行修改创建即可方法2:根据现有资源,进入其配置中,复制模板,再进行创建即可复制其中的配置,获取模板方法3:通过--dry-run选项模拟运行创建资源的命令获取kubectl create|run|expose -n <命名空间> <资源类型> <资源名称> [参数选项] --dry-run=client -o yaml > XXX.yaml。

2402_83805984的博客 2174

Kubernetes 资源清单

本文介绍了Kubernetes的两种安装方式:kubeadm容器化安装(简单但性能受限)和二进制本地安装(复杂但性能更优)。重点演示了在虚拟机环境中部署一主两从集群的具体步骤,包括网络配置、防火墙设置、Docker环境准备等。通过iKuai路由器实现自定义网络访问互联网,详细记录了Rocky Linux9系统的初始化配置、Docker安装、CRI-Docker插件安装等关键操作流程,为K8s集群部署提供了完整的实践指导。 (字数:149)

欢迎关注微💌,不定期发布安全运维、甲方视角安全建设、乙方厂商专业安全服务内容。 1305
上一篇: 详解共享库的动态加载
下一篇: K8S之Pod控制器
后场技术
博客等级 码龄11年 156粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值