Kubernetes基础概念和命令

Kunbernetes(k8s)的基本概念详解+部署 详细讲讲k8s各组件的功能。 阅读详情

K8s基础概念

  • Master节点:管理整个K8s集群

    • 生产环境至少3个节点,大型集群建议5个节点;

    • 测试环境1个节点;

  • Worker节点:运行容器,Pod,容器的生命周期管理;

    • 每个节点运行10~100个Pod;根据pod的规模调整Worker节点的数量;

Pod

Pod是K8s中最小的管理单元,Pod是用于管理容器的;

Pod的作用是“虚拟的节点”,微型节点,一个Pod中至少可以管理运行一个或多个容器,在同一个Pod中的容器可以共享网络和存储;

管理器

用户管理Pod的一系列管理器;

  • 副本管理;

  • 生命周期管理;

  • 弹性的扩缩容管理;

  • Deployment:管理无状态服务(Nginx、Tomcat、PHP)

  • StatefulSet:管理无状态服务(MySQL)

  • Job:管理一次性服务

  • CronJob:计划执行服务

服务发现与网络通信:应用“通信”的规则

通过网络将数据请求转发给指定容器;实现负载均衡的功能;

Service组件实现Pod的服务发现与负载均衡;

配置与存储:应用“吃喝”的保障

  • ConfigMap:存储配置文件

  • Secret:存放密码或密钥

  • PV/PVC:持久化存储的资源与资源绑定

资源管理:资源“分类”的方法

  • Namespace:可以给不同的业务分组管理,实现资源的隔离与限制;

  • Label:标签,实现Pod调度、Pod的资源管理器、服务器发现、负载均衡;


K8s基础命令

kubeadm:快速安装k8s命令行工具

  • 初始化Master节点,全局设置

 config:指定初始化集群时使用的配置文件
 init:初始化Master节点
 join:初始化Node节点并加入集群
 reset:重置当前节点,无论是Master节点还是Node节点都可以重置
 token: kubeadm join
 # 打印默认初始化配置
 kubeadm config print init-defaults
 # 生成新的加入令牌
 kubeadm token create --print-join-command  

kubectl:K8s集群管理命令

kubectl主要职责是对资源对象进行操作。

K8s中一切皆为资源;

资源缩写说明
cluster集群
componentstatu sescs组件对象
configmapscmConfigMap对象
daemonsetsdsDaemonSet对象
deploymentsdeploy无状态服务对象,K8s最常用的控制器
endpointsep端点集合(实现同一类Pod的IP地址列表)
eventsevevents集群事件集合
ingressing访问入口
nodesno节点
namespacesns命名空间
podspo获取Pod信息
replicasetsrsPod副本数
cronjob周期性任务控制
servicessvc做负载均衡的服务入口
 # 查看API资源
 kubectl api-resources
 # 查看API版本
 kubectl api-versions
  • 查看资源

 kubectl get 资源 -o 格式
 格式: * wide 显示详细信息
       * json 以json格式显示详细信息
       * yaml 以yaml格式显示详细信息
 -w 等待显示资源状态的修改
 -n 指定命名空间
  • 创建、删除、更新资源

 # 通过YAML创建资源,需要先vim这个yaml文件
 #(不指定名称可以换成.,表示当前目录下所有文件)
 vim 资源名称
 ------------------------
 apiVersion: v1
 kind: Pod
 metadata:
   name: nginx
   labels:
     app: web
 spec:
   hostNetwork: true
   containers:
   - name: nginx
     image: 192.168.57.200:8099/library/nginx:latest
     ports:
     - containerPort: 80
 ------------------------
 kubectl create -f 资源名称
 ​
 # 如果是需要换成h5-game,需要提前在节点上login并拉取镜像
 docker login 192.168.57.200:8099
 docker pull 192.168.57.200:8099/yun11/h5-game:1.0
 ​
 # 删除资源
 kubectl delete 资源类型 名称 -n 命名空间
 kubectl delete -f 资源名称
 ​
 # 修改或者更新资源(镜像),应用某一个资源,资源不存在时创建资源,资源存在时不进行操作,也支持修改资源(用的比create多,也可以修改)
 kubectl apply -f 资源名称
 ​
 # 直接操作资源
 kubectl delete pod <pod-name>        # 删除指定Pod
 kubectl delete pod --all             # 删除所有Pod
 kubectl create namespace <name>      # 创建命名空间
  • 查看资源的详细信息,运行状态,常用于排错

 kubectl describe pod nginx
  • 查看运行日志,用于排错

 # 查看Pod日志
 kubectl logs <pod-name>
 # 实时查看日志
 kubectl logs -f <pod-name> 
  • 在线更新运行中配置,yaml格式

 kubectl edit pod nginx-game
  • 进入容器进行修改

 kubectl exec -it <pod-name> -- bash
  • 直接创建pod并启动容器

 kubectl run --image=192.168.57.200:8099//镜像 镜像名 --port=8080
 # 举例说明
 kubectl run --image=192,168.57.200:8099/library/tomcat:8 tomcat-app --port=8080
 kubectl delete pod tomcat-app
  • 双向复制

 kubectl cp init.sh nginx-game:/data
 kubectl cp nginx-game:/data/.
  • 更新与回滚

 kubectl set image deployment/<name> <container>=<image>  # 更新镜像
 kubectl rollout undo deployment/<name>                  # 回滚部署
 kubectl scale deployment <name> --replicas=<number>     # 伸缩Pod数量
  • 标签管理(过滤器,筛选功能类似select)

 kubectl label nodes <node-name> <key>=<value>    # 给节点添加标签
 kubectl label pod <pod-name> <key>=<value>       # 给Pod添加标签
 kubectl label pod <pod-name> <key>-              # 删除标签

Node节点操作

  • 添加:

    • 准备工作:

      • 1.Docker

      • 2.系统优化

    • 让Master生成join+token命令

       [root@master~]# kubeadm token create --print-join-command
    • Node节点执行kubeadm join命令

       # Node节点先重启
       [root@node2 ~]# systemctl start kubelet
       # 然后再运行加入命令join...
  • 删除:

    • 在Master节点中设置Node为不可调用

       [root@master~]# kubectl cordon node2
    • 在Master节点中强制驱逐Node节点的Pod

       # 需要先删除上面的Pod,或者资源
       [root@master~]# kubectl drain node2 --ignore-daemonsets --delete-emptydir-data
    • 从Master节点中删除节点记录

       [root@master~]# kubectl delete node node2
    • 清理被移除的节点

       [root@node2 ~]# systemctl stop kubelet
       # 重置节点:清理该节点上的 Kubernetes 配置:
       [root@node2 ~]# kubeadm reset
       # 清理残余数据:删除 etcd 数据目录和 Kubernetes 配置文件:
       [root@node2 ~]# rm -rf /etc/cni/net.d /var/lib/kubelet /var/lib/etcd
  • 查看

 kubectl get node
 kubectl describe node node2

Kubernetes中Yaml

基本语法格式

 ---                      # YAML起始分割作用,可以在一个文件中写多个配置
 apiVersion: v1           # 查询API版本,kubectl api-resources | grep pods
 kind: Pod                # K8s资源类型
 metadata:                # 元数据,包含资源对象的名称和标签等设置
   name: myapp            # 资源名称,可以用来重启查看删除
   labels:                # 标签,筛选
     app: webapp          # 标签键值对
     info: abcd
 spec:                    # 容器的详细配置规格
   containers:            # 容器定义
   - name: web1           # 容器名称,第一个
     image: nginx:1.21    # 容器镜像
   - name: web2           # 第二个容器名称(如果只有一个后面就不写)
     image: mysql:8.0.20  # 第二个容器镜像

关键字段解析

  • apiVersion: 指定使用的Kubernetes API版本,不同资源类型使用不同版本

  • kind: 定义资源类型,如Pod、Deployment、Service等

  • metadata: 包含资源的标识信息(名称、标签、注释等)

  • spec: 描述资源的期望状态,这是最复杂的部分

  • status: 记录资源的实际状态,由Kubernetes自动生成,使用清单时通常省略

 # 查看K8S自带的资源管理帮助文档
 kubectl explain deployment

--dry-run生成YAML文件框架

快速生成YAML模板

Kubernetes提供了强大的模板生成功能,无需手动编写YAML。

 # 1、生成Pod模板
 kubectl run myapp --image=nginx:1.17 --dry-run=client -o yaml > pod.yaml
 # 举例:
 kubectl run myapp --image=nginx:1.26 --dry-run=client -o yaml > 01-nginx-pod.yaml
 # 查看结果
 cat 01-nginx-pod.yaml 
 apiVersion: v1
 kind: Pod
 metadata:
   creationTimestamp: null
   labels:
     run: myapp
   name: myapp
 spec:
   containers:
   - image: nginx:1.26
     name: myapp
     resources: {}
   dnsPolicy: ClusterFirst
   restartPolicy: Always
 status: {}
 ​
 # 2、生成Namespace模板
 kubectl create namespace work --dry-run=client -o yaml > namespace.yaml
 # 举例
 kubectl create namespace work --dry-run=client -o yaml > 02-namespace.yaml
 # 查看结果
 cat 02-namespace.yaml 
 apiVersion: v1
 kind: Namespace
 metadata:
   creationTimestamp: null
   name: work
 spec: {}
 status: {}
 ​
 # 3、生成Deployment模板
 kubectl create deployment myapp --image=dbimg:1.35 --dry-run=client -o yaml > deployment.yaml
 # 举例
 kubectl create deployment myapp --image=nginx:1.24 --dry-run=client -o yaml > 03-nginx-deployment.yaml
 # 查看结果
 cat 03-nginx-deployment.yaml 
 apiVersion: apps/v1
 kind: Deployment
 metadata:
   creationTimestamp: null
   labels:
     app: myapp
   name: myapp
 spec:
   replicas: 1
   selector:
     matchLabels:
       app: myapp
   strategy: {}
   template:
     metadata:
       creationTimestamp: null
       labels:
         app: myapp
     spec:
       containers:
       - image: nginx:1.24
         name: nginx
         resources: {}
 status: {}

资源操作命令详解

1.创建资源

 # 从YAML文件创建资源
 kubectl create -f myapp.yaml
 ​
 # 创建多个资源
 kubectl create -f dir/  # 目录下所有YAML文件
 kubectl create -f file1.yaml -f file2.yaml

2.应用声明式配置

 # 创建或更新某个资源(推荐方式)
 kubectl apply -f myapp.yaml
 ​
 # 查看将要应用的变更
 kubectl apply -f myapp.yaml --dry-run=client
 ​
 # 强制替换配置
 kubectl replace --force -f myapp.yaml

3.删除资源

 # 删除指定资源
 kubectl delete -f myapp.yaml
 ​
 # 删除多个资源
 kubectl delete -f directory/
 ​
 # 基于标签删除(可能的多个pod)
 kubectl delete pod -l app=webapp

高级操作技巧

1. 部分更新资源(打补丁)
# 使用merge混合策略(默认是strategic策略性合并)更新标签,适用于简单字段更新
cat > patch.yaml << EOF
metadata:
  labels:
    key: myapp-value
EOF

kubectl patch pod myapp --type=merge --patch-file patch.yaml

# 使用JSON patch删除标签
cat > remove-label.yaml << EOF
- op: remove
  path: /metadata/labels/key
EOF

kubectl patch pod myapp --type=json --patch-file remove-label.yaml
2. 添加注解
# 添加或更新注解
kubectl annotate pod myapp webapp="nginx.1.17" description="前端Web服务器"

# 查看注解信息
kubectl describe pod myapp | grep Annotations
3. 实时编辑资源(对于改动不大的情况,使用edit更快速)
# 编辑运行中的资源
kubectl edit pod myapp

# 编辑Deployment配置(编辑时会打开默认文本编辑器,修改保存后会立即生效)
kubectl edit deployment/myapp

常见问题排查

1. YAML格式错误
# 常见的格式错误
error: error parsing pod.yaml: error converting YAML to JSON: yaml: line 10: did not find expected key

# 解决方法:使用YAML验证工具或在线校验器
2. 资源已存在错误
# 使用create时如果资源已存在会报错
Error from server (AlreadyExists): error when creating "myapp.yaml": pods "myapp" already exists

# 解决方法:使用apply代替create,或者先删除再创建
3. 字段验证错误
# API服务器会验证字段合法性
The Deployment "myapp" is invalid: spec.template.spec.containers[0].name: Required value

# 解决方法:使用kubectl explain查看字段要求

掌握Kubernetes资源清单文件的使用是容器编排的基础技能。

K8S概念和架构 文章目录第一部分 K8S概念和架构1.为什么要使用K8S2.组成部分和功能2.1功能2.2组成部分和集群架构3.核心概念3.1 Pod3.2controller控制器3.3service4.搭建k8s4.1搭建方式4.2单个master集群方式4.2.1准备工作4.2.2部署master和node节点4.2.3部署网络插件错误统计join命令失败kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documenta 阅读详情

相关推荐

K8S笔记(2) -- kubectl命令和yaml字段解析

背景 之前写了一篇有关k8s对象,组件,安装的介绍博客–k8s基础概念,本文就通过简单命令操作和yaml文件再进一步了解下k8s吧。 环境介绍 ip/hostname docker k8s pod cidr service cidr 规格 172.20.2.84/master 1.18.06 1.16.3 10.10.0.0/16 10.244.0/16 4C4G 172.20...

xl_2016的博客 4358

k8s基本概念、k8s对象、三个命令玩转所有的yaml写法、给vscode安装插件、kubectl和kubelet及自动补全

k8s里面操作的资源实体,就是k8s的对象,可以使用yaml来声明对象。然后让k8s根据yaml的声明创建出这个对象;操作 Kubernetes 对象 —— 无论是创建、修改,或者删除 —— 需要使用 Kubernetes API。比如,当使用 kubectl 命令行接口时,CLI 会执行必要的 Kubernetes API 调用Kubernetes对象指的是Kubernetes系统的持久化实体,所有这些对象合起来,代表了你集群的实际情况。常规的应用里,我们把应用程序的数据存储在数据库中,

一切随心走的博客 2417

kubernetes和Jenkins的基本概念、常用命令、配置方法

Kubernetes(通常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以上是 Kubernetes 和 Jenkins 的基本概念、常用命令和配置方法的简要介绍。针对具体的使用场景和需求,可以深入学习和定制化配置。Jenkins 是一个流行的开源持续集成和持续交付(CI/CD)工具,用于自动化构建、测试和部署软件。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

Kubernetes基础概念和核心组件以及日常使用命令

Kubernetes核心组件与常用命令

ymf51的博客 881

LAMMPS ReaxFF模拟后处理:如何用Python精准追踪C-N键的断裂与形成?

本文详细介绍了如何利用Python对LAMMPS ReaxFF模拟结果进行后处理,精准追踪C-N键的断裂与形成过程。通过解析键级输出文件、构建原子类型映射字典,并实现C-N键的统计与可视化,为材料科学和催化反应研究提供了高效的数据分析解决方案。文章特别强调了ReaxFF力场在断键分析中的关键作用,并提供了完整的Python代码实现。

weixin_28706923的博客 355

PCB工程师必看:别再搞错1078玻纤布的Dk了,手把手教你算等效介电常数

本文为PCB工程师提供了1078玻纤布等效介电常数(Dk)的详细计算指南,帮助解决高速设计中的信号完整性问题。通过解析玻纤布结构、混合介质理论和实战计算方法,指导工程师准确设置EDA工具参数,避免常见的Dk计算误区,提升设计精度和仿真准确性。

weixin_42546392的博客 398

k8s核心概念pod 基本定义和命令

pod定义和基本命令

double_happiness的博客 1572

从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南

本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。

weixin_29063979的博客 319

Kubernetes入门

K8S入门一、K8S概述1.1 K8S架构1.2 基本概念 一、K8S概述 1.1 K8S架构 1.2 基本概念

IDreamsComeTrue的博客 1182

蓝牙配对鉴权过程深度剖析:Just Works/Numeric Comparison/Passkey Entry/OOB 协议流程

当你新买的智能手表与手机配对时,是否遇到过这样的情况:有时只需在手机上点击 "确认" 即可完成配对,有时却需要在手表上输入手机显示的 6 位数字,而连接车载蓝牙时可能又需要输入固定密码?这些差异背后,是蓝牙配对鉴权机制在默默工作。蓝牙配对鉴权是设备间建立安全连接的核心环节,直接关系到数据传输的保密性和设备身份的真实性。​

byte轻骑兵的技术小窝 3571

基于STM32的录音机设计(STM32F103+VS1053B)

本项目设计并实现了一款基于STM32微控制器的便携式录音机。该录音机采用STM32F103C8T6作为主控芯片,结合VS1053B音频编解码模块、SD卡存储、OLED显示屏以及按键模块,提供了手动录音、自动录音和录音回放等多种功能。

1万+

K8S基础概念和环境搭建

K8S基础概念和环境搭建

m0_64318128的博客 1619

AutoSAR实验视频讲解:相关资料下载

AutoSAR实验视频讲解:闪烁一颗LED实验【相关资料下载】 总目录 为了方便大家自己的实验顺利进行,这里我们准备了一些实验中可能用到的资料供大家使用 介绍 这里主要是三个文件: MyApp_Core.0是我们的用户代码,在工程集成那集将会讲解 McalConfig.arxml就是我们的Mcal导出文件,用于导入到DaVinci中生成代码 CAN.dbc文件是我们的通信矩阵文件 以上几个文件都是简单的配置,不具有实际项目的实用性,大家仅供参考 // 顺便吐槽一句:百度网盘的吃相真的难看 下载连接

雪云飞星的博客 6668

Kubernetes(K8S)快速入门

在本门课程中,我们将会学习K8S一些非常重要和核心概念,已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署,Pod容器,调度器,Service服务,Node集群节点,Helm包管理器等等。要学习本门课程,至少需要拥有自己的K8S环境,否则,课程中相关的命令和操作,只能作为了解,而没有办法进行实操,学习的效果会稍微偏低。本课程作为K8S的零基础体系课程之一,用来了解K8S的核心组件和核心概念,学习K8S的基础知识有非常重要的学习价值。下面,就让我带着同学们一起去探索美妙的云原生世界吧!

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1624

2023,程序员的出路在哪里?

可是似乎从30岁开始这工资就没涨过,前面跳槽几次涨的薪水在30岁以后跳槽已经不管用了、定格了,这几年由于市场环境不景气,程序员竞争越来越激烈,36岁跟30拿的工资一模一样,不仅工资拿的一样,反而事情还越来越多了,这些都意味着什么?处理故障需要的通常不仅仅是写代码的能力,还需要对一个系统的全貌要有一定的掌握。虽然目前不少大型互联网企业都在进行结构性调整,但是从互联网行业发展的基本面来看,未来在产业互联网发展的过程中,IT行业和传统行业将会释放出大量的就业岗位,所以未来程序员的发展空间还是非常值得期待的。

AI天才研究院 20万+

3D iToF深度分辨率测量

本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。

dream it possible 252

k8s(2):核心概念和基础命令

1. 集群 一个 Kubernetes 集群包含两种类型的资源: Master 调度整个集群 Nodes 负责运行应用 1.1 Master Master 协调集群中的所有活动,例如调度应用、维护应用的所需状态、应用扩容以及推出新的更新。Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。 kube-apiserver:用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-ap

泛泛之素 500

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Kubernetes基本概念和术语,以及Kubectl命令大全

Kubernetes基本概念和术语 kubernetes是一个高度自动化的资源控制系统,它通过跟踪对比etcd库保存的“资源期望状态”与当前环境的“实际资源状态”的差异来实现自动化控制和自动纠错的高级功能 Master 是集群的控制节点,所有的控制指令都发给他 Master上运行着以下进程: Kubernetes API Server:提供rest接口,增删改查资源 Kubernetes...

Code changes the world! 484

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

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

基于Kubernetes简易集群的部署搭建

使用controller和两个node节点,完成简单k8s集群的部署搭建,并完成pod的调度。

qq_42853133的博客 2516

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

K8s核心概念-命令式和声明式命令

k8s的核心概念

xmelon 132

Kubernetes的架构与基本概念及创建资源

API server: 是k8s 集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源。提供了多种访问方式,浏览器,命令行,文件------->BrogMaster-------->scheduler(调度器)写入paxos数据库存储,并进行监听,如果发现请求就进入消费环节。注意:直接运行创建的Deployment资源对象,是经常使用的一个控制器资源类型,除了deployment,还有rc,rs等Pod控制器,Deployment是一个高级的Pod控制器。

li175325的博客 1744

k8s基础概念和常用操作

1、基本概念 搞清楚master, node, pod,controller(deployoment,ReplicaSet,DaemonSet,StatefulSet,Job),service概念,在此基础上先学会通过kubernetes命令行客户端 kubectl管理应用。 (1)get #login master node,list nodes in cluster $ kubect...

wangtingting_100的博客 972

【一】Kubernetes基本概念、安装 和命令行工具kubectl

源于听了IBM老师讲授的Kubernetes系列公开课,整理笔记记录=作用:备忘与分享。简单了解k8s基本的概念、实践安装1.  K8s架构Here’s the architecture of a Kubernetes cluster without the cloud controller managerkube-apiserver 提供统一接口kube-scheduler 负责资源与Pod的匹...

随笔记录-分享&记忆 2902

K8S一 k8s基础知识及实战

K8S集群安装 k8s动态扩容缩容 k8s查看Pod打印的日志 k8spod滚动升级与回滚

东风麦芽糖 4498

k8s基础概念、Pod、k8s基础命令

Master节点:管理整个k8s集群生产环境至少3个节点,大型集群5个节点;测试环境1个节点Worker节点:运行容器,pod,容器生命周期管理;每个节点运行10~100个pod;根据pod的规模调整Worker节点的数量;PodPod是k8s中最小的管理单元,Pod是用于管容器的;Pod的作用是“虚拟的节点”,微型节点,一个Pod中至少可以管理运行一个或多个容器,在同一个Pod中的容器可以共享网络和存储;管理器用户管理pod的一系列管理器;副本管理生命周期管理弹性的扩缩容管理。

2502_92656182的博客 1369

k8s实践(二):基本概念、kubectl命令和资料分享

概念 1. Kubernetes简介 Kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署、维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态服务 广泛的 Volume 支持 插件机制保证扩展性 Kubernetes 发展非常迅速,已经成为容器编排领域的领导者。 ...

220
上一篇: Kubernetes1.23版本搭建(三台机器)
下一篇: 命名空间、资源限制和Pod简介
chen_note
博客等级 码龄1年 251粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值