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

Marin说PCB之LPDDR5的布线注意事项--03

这个规则中是把每个字节中的WCK to RDQS 以及DM / DQ to WCK等长规则都加到了DM / DQ这个等长规则中去了,因为芯片手册上的设计要求中的DM / DQ这个group的等长误差是+-50MIL, WCK to RDQS的等长group的规则是62.5MIL,DM / DQ to WCK等长group的规则是相对松一些是150MIL。其实上面的等长规则还是建少了一些的,例如手册上要求的每个channel的WCK0:1,WCK2:3等长误差在+-488MIL,这个规则建议还是补上去吧。

weixin_45223454的博客 1229

UWB定位原理详细介绍

Hello大家好我是小智,今天我来给大家介绍下超宽带的定位原理,首先我们来讲下什么是UWB技术。 超宽带(Ultra Wide Band)简称UWB,和我们熟悉的WIFI、蓝牙技术一样属于通信技术的一种,UWB是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,其所占的频谱范围很宽,右图是一种典型的正弦载波信号图。 UWB这种技术有什么特点呢? UWB系统结构实现简单;2.具有高速的数据传输能力;3.功耗低;4.安全性高;5.多径分辨能力强;6.可用于精确定位等特点。 UWB.

qq_35699674的博客 2万+

Kubernetes-资源清单

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

刘某的博客 1611

项目管理知识体系(PMBOK)中的质量规划详解

你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。

项目管理的博客 1118

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

工业相机的检测原理课件(建议收藏)

本课件为各位工程师详细介绍了工业相机的视觉检测原理 ,旨在为工程师调试工业相机的视觉检测原理时提供理论性指导。

Bamboo265925的博客 498

CesiumJS【Basic】- #002 加载在线瓦片地图数据

cesiumjs 加载各类在线地图数据

AlanL的专栏 952

【kubernetes】pod的资源配置清单

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

王佑辉的博客 998

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 124

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

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

永远是少年 2459

YOLO蒸馏原理篇之---MGD、CWD蒸馏

本文详细介绍了特征蒸馏中的两种经典有效方法,MGD和CWD蒸馏

qq_41920323的博客 3241

AI大模型探索之路-训练篇3:大语言模型全景解读

大规模语言模型(Large Language Models,LLM),也称大语言模型或大型语言模型,是一种由包含数百亿以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文本进行训练。

寻道AI,探索AI无限可能! 6278

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

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

ll945608651的博客 631

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

永远是少年 1278

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

weixin_33795743的博客 171

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

从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、付费专栏及课程。

余额充值