kubernetes之ingress及ingress controller

Kubernetes 安装配置ingress controller 阅读详情

 

什么是ingress

Ingress是授权入站连接到达集群服务的规则集合。

  • 从外部流量调度到nodeprot上的service
  • 从service调度到ingress-controller
  • ingress-controller根据ingress中的定义(虚拟主机或者后端的url)
  • 根据虚拟主机名调度到后端的一组pod中

 

Ingress资源定义

 kubectl explain ingress.spec

  • rules 定义成虚拟主机调度还是url调度
  • backend  知道后端主机

 部署ingress

以下文件是kubenetes的官方提供

创建namespace

apiVersion: v1
kind: Namespace
metadata:
  name: ingress-nginx

创建role

复制代码

---

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress-serviceaccount
  namespace: ingress-nginx

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: nginx-ingress-clusterrole
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - endpoints
      - nodes
      - pods
      - secrets
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - services
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - "extensions"
    resources:
      - ingresses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
        - events
    verbs:
        - create
        - patch
  - apiGroups:
      - "extensions"
    resources:
      - ingresses/status
    verbs:
      - update

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  name: nginx-ingress-role
  namespace: ingress-nginx
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - pods
      - secrets
      - namespaces
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - configmaps
    resourceNames:
      # Defaults to "<election-id>-<ingress-class>"
      # Here: "<ingress-controller-leader>-<nginx>"
      # This has to be adapted if you change either parameter
      # when launching the nginx-ingress-controller.
      - "ingress-controller-leader-nginx"
    verbs:
      - get
      - update
  - apiGroups:
      - ""
    resources:
      - configmaps
    verbs:
      - create
  - apiGroups:
      - ""
    resources:
      - endpoints
    verbs:
      - get

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: nginx-ingress-role-nisa-binding
  namespace: ingress-nginx
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: nginx-ingress-role
subjects:
  - kind: ServiceAccount
    name: nginx-ingress-serviceaccount
    namespace: ingress-nginx

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: nginx-ingress-clusterrole-nisa-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: nginx-ingress-clusterrole
subjects:
  - kind: ServiceAccount
    name: nginx-ingress-serviceaccount
    namespace: ingress-nginx

复制代码

创建confmap

复制代码

---

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx

复制代码

创建ingress服务

复制代码

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: ingress-nginx
      app.kubernetes.io/part-of: ingress-nginx
  template:
    metadata:
      labels:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/part-of: ingress-nginx
      annotations:
        prometheus.io/port: '10254'
        prometheus.io/scrape: 'true'
    spec:
      serviceAccountName: nginx-ingress-serviceaccount
      containers:
        - name: nginx-ingress-controller
          image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.19.0
          args:
            - /nginx-ingress-controller
            - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
            - --configmap=$(POD_NAMESPACE)/nginx-configuration
            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
            - --publish-service=$(POD_NAMESPACE)/ingress-nginx
            - --annotations-prefix=nginx.ingress.kubernetes.io
          securityContext:
            capabilities:
                drop:
                - ALL
                add:
                - NET_BIND_SERVICE
            # www-data -> 33
            runAsUser: 33
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          ports:
          - name: http
            containerPort: 80
          - name: https
            containerPort: 443
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 10254
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 10254
              scheme: HTTP
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1

复制代码

创建TCP服务的confmap

复制代码

---

kind: ConfigMap
apiVersion: v1
metadata:
  name: tcp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

复制代码

创建UDP服务的confmap

复制代码

---

kind: ConfigMap
apiVersion: v1
metadata:
  name: udp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

复制代码

创建backend

复制代码

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: default-http-backend
  labels:
    app.kubernetes.io/name: default-http-backend
    app.kubernetes.io/part-of: ingress-nginx
  namespace: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: default-http-backend
      app.kubernetes.io/part-of: ingress-nginx
  template:
    metadata:
      labels:
        app.kubernetes.io/name: default-http-backend
        app.kubernetes.io/part-of: ingress-nginx
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: default-http-backend
        # Any image is permissible as long as:
        # 1. It serves a 404 page at /
        # 2. It serves 200 on a /healthz endpoint
        image: gcr.io/google_containers/defaultbackend:1.4
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: 10m
            memory: 20Mi
          requests:
            cpu: 10m
            memory: 20Mi
---

apiVersion: v1
kind: Service
metadata:
  name: default-http-backend
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: default-http-backend
    app.kubernetes.io/part-of: ingress-nginx
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app.kubernetes.io/name: default-http-backend
    app.kubernetes.io/part-of: ingress-nginx

复制代码

部署一个ingress-controller的service nodePort

如果需要集群外部访问,就需要部署一个NodePort的service 用来提供外部访问

复制代码

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
    nodePort: 30080
  - name: https
    port: 443
    targetPort: 443
    protocol: TCP
    nodePort: 30443
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

复制代码

尝试访问

 

部署一个应用通过ingress访问

部署一个myapp的测试应用

复制代码

apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: default
spec:
  selector:
    app: myapp
    release: dev
  ports:
  - name: http
    targetPort: 80
    port: 80

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      release: dev
  template:
    metadata:
      labels:
        app: myapp
        release: dev
    spec:
      containers:
      - name: myapp-containers
        image: ikubernetes/myapp:v2
        ports:
        - name: http
          containerPort: 80

复制代码

 部署myapp的ingress

复制代码

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-myapp
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: myapp.jaxzhai.com
    http:
      paths:
      - backend:
          serviceName: myapp
          servicePort: 80

复制代码

查看结果

复制代码

$  kubectl get ing
NAME            HOSTS               ADDRESS   PORTS     AGE
ingress-myapp   myapp.jaxzhai.com             80        2m
$ kubectl describe ing  ingress-myapp
Name:             ingress-myapp
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host               Path  Backends
  ----               ----  --------
  myapp.jaxzhai.com  
                        myapp:80 (<none>)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"nginx"},"name":"ingress-myapp","namespace":"default"},"spec":{"rules":[{"host":"myapp.jaxzhai.com","http":{"paths":[{"backend":{"serviceName":"myapp","servicePort":80}}]}}]}}

  kubernetes.io/ingress.class:  nginx
Events:
  Type    Reason  Age   From                      Message
  ----    ------  ----  ----                      -------
  Normal  CREATE  2m    nginx-ingress-controller  Ingress default/ingress-myapp

复制代码

部署完成后,生成的规则会自动注入到ingress-controller中,意思会生成nginx配置文件,验证:

复制代码

$ kubectl exec -it -n ingress-nginx nginx-ingress-controller-6bd7c597cb-8qm9x -- /bin/sh

$ cat nginx.conf 
.........
    ## start server myapp.jaxzhai.com
    server {
        server_name myapp.jaxzhai.com ;
        
        listen 80;
        
        listen [::]:80;
        
        set $proxy_upstream_name "-";
        
        location / {
            
            set $namespace      "default";
            set $ingress_name   "ingress-myapp";
            set $service_name   "myapp";
            set $service_port   "80";
            set $location_path  "/";
            
            rewrite_by_lua_block {
                
                balancer.rewrite()
                
            }
            
            log_by_lua_block {
                
                balancer.log()
                
                monitor.call()
            }
            
            port_in_redirect off;
            
            set $proxy_upstream_name "default-myapp-80";
.......

复制代码

访问应用

 

碎片化时间学习和你一起终身学习

分类: Linux-运维, 容器技术

Kubernetes之服务发现ingress & ingress controller Service虽然解决了服务发现和负载均衡的问题,但它在使用上还是有一些限制: 只支持4层负载均衡,没有7层功能 对外访问时,NodePort类型需要在外部搭建额外的负载均衡,而LoadBalancer要求kubernetes必须跑在支持的cloud provider上 一、ingress引入历程 我们已经了解到Kubernetes暴露服务的方式目前只有三种:LoadBalancer Serv... 阅读详情

相关推荐

k8s 部署 Nginx Ingress Controller

一.下载yaml 文件 wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml 二.修改 yaml 1.把文件中所有的 v1beta1 修改为 v1 ,因为 v1beta1 在 V1.17 之后就不推荐使用了,在V1.22之后将不可用 2.找到 nginx-ingress-controller 的配置,在 spec:template:spec:

Fickle_actor的博客 1829

Nginx Ingress Controller原理简介及使用示例

一、概念介绍 介绍Nginx Ingress Controller之前,需要先理解三个概念。 Ingress:对集群中服务的外部访问进行管理的 API 对象,可以理解为kubernetes中一种定义从集群外部到集群内服务的HTTP/HTTPS 路由的资源类型; Ingress Controller:负责通过负载均衡器(如nginx/haproxy)来实现 Ingress中定义的路由,通常以pod形式运行; IngressClass:一种定义某个具体Ingress Controller的资..

洒满阳光的午后的博客 1万+

Kubernetes NGINX Ingress Controller

NGINX Ingress Controller 是用于在 Kubernetes 集群中管理 HTTP 和 HTTPS 流量的控制器。它允许用户通过 Ingress 资源配置入口点,从而轻松将外部请求引导到集群内的服务。负载均衡:将流量分配到多个服务副本上,以提高可用性和可靠性。SSL/TLS 终止:可以在入口点终止 SSL/TLS,加密和解密请求流量,以减少应用服务的负担。基于路径和域名的路由:支持基于请求的 URL 路径或主机名,将请求转发到不同的服务。跨域资源共享 (CORS)

qq_42895490的博客 676

K8S Advance: Ingress Controller

在云原生生态中,通常来讲,入口控制器( Ingress Controller )是 Kubernetes 中的一个关键组件,用于管理入口资源对象。Ingress 资源对象用于定义来自外网的 HTTP 和 HTTPS 规则,以控制进入集群内服务的流量。而 Ingress Controller 则是真正实现 Ingress 规则的组件。从更为准确的角度而言,入口控制器( Ingress Controller )管理 L4 和 L7 层请求的南北向流量,也就是我们所说的从集群外部进入或离开集群的流程。

summer_fish的专栏 1622

【kubernetes】Ingress和Ingress-Controller介绍,高可用应用案例

Ingress和Ingress-Controller介绍,高可用应用案例

meidongyan的博客 2060

从零构建HFSS连接器仿真模型:以SMP接口的精准复现为例

本文详细介绍了如何从零构建HFSS连接器仿真模型,以SMP接口的精准复现为例。通过获取官方模型、导入技巧、信号路径提取和介质结构复现等步骤,帮助工程师避免常见错误,提升高频电路仿真的准确性。文章特别强调了模型精度对仿真结果的影响,并提供了实用的调试和管理建议。

weixin_29041767的博客 431

K8s七层代理Ingress Controller详解

本文旨在深入解析Kubernetes(K8s)中的七层代理Ingress Controller,探讨其在K8s集群中扮演的关键角色以及实现原理。Ingress Controller作为K8s网络模型的重要组成部分,提供了对HTTP/HTTPS等七层协议的代理功能,实现了对外部流量的高效管理和路由。

博客虽小,世界尽在其中 2436

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5510

学习笔记三十四:Ingress和 Ingress Controller概述

Ingress官网定义:Ingress可以把进入到集群内部的请求转发到集群中的一些服务上,从而可以把服务映射到集群外部。Ingress 能把集群内Service 配置成外网能够访问的 URL,流量负载均衡,提供基于域名访问的虚拟主机等。Ingress简单的理解就是你原来需要改Nginx配置,然后配置各种域名对应哪个 Service,现在把这个动作抽象出来,变成一个 Ingress 对象,你可以用 yaml 创建,每次不要去改Nginx 了,直接改yaml然后创建/更新就行了;

weixin_43258559的博客 930

ConnectionResetError 10054 根因分析与全链路防御指南

ConnectionResetError(错误码10054)是TCP协议中服务端主动发送RST包导致的强制断连,本质并非网络连接失败,而是服务端基于空闲超时、连接满载、TLS协商失败等策略做出的确定性终止决策。理解其底层原理有助于跳出‘重试’误区,转向连接生命周期管理。该错误高频出现在HTTP长连接、WebSocket、第三方API对接等场景,尤其在Nginx反向代理、负载均衡器(如AWS ALB)、WAF设备及内核conntrack机制下极易触发。本文结合Wireshark抓包分析、客户端心跳保鲜、协议指

weixin_30225755的博客 640

拌合楼软件开发(24)接收微信消息生成车辆计划

【摘要】针对拌合站客户群体文化程度不高、习惯微信群沟通的业务场景,提出通过企业微信机器人实现微信对话下单的解决方案。核心是利用WorkTool工具的消息回调机制:1)配置接收消息的API接口;2)解析JSON格式的对话数据,筛选@机器人的有效消息;3)采用*号分隔符提取订单信息并进行校验;4)建立微信昵称与客户系统的映射关系。方案解决了传统系统登录门槛高的问题,但需注意群名唯一性、多系统对接及客户身份识别等关键问题。全文重点阐述技术实现逻辑而非具体代码。

morsth的博客 1045

K8s 之 Ingress 及 Ingress Controller

Ingress 简介与部署指南 本文介绍了 Kubernetes 中的 Ingress 概念及其部署方法。Ingress 是管理集群外部访问的 API 对象,负责 HTTP/HTTPS 路由,与 Service 的内部服务发现形成互补。 核心要点: Ingress 功能:提供外部访问入口、基于域名/路径的路由、SSL/TLS 终止和负载均衡 与 Service 暴露方式的对比:Ingress 工作在应用层(L7),支持域名访问,是最推荐的生产环境方案 Ingress 与 Controller 的关系:Ing

liu_chen_yang的博客 1152

数电实训:万年历

万年历

Lmyccq的博客 1万+

8、k8s面试题-什么是ingress?什么是ingress controller?

Ingress 是。

xuebo1129927648的博客 180

14、X射线图像处理与特征提取全解析

本文全面解析了X射线图像处理与特征提取的关键技术,涵盖图像预处理、滤波、边缘检测、分割与恢复等流程,并深入探讨了几何特征(如面积、周长、圆度、椭圆拟合)、强度特征(均值、方差、对比度)、傅里叶描述符、不变矩(Hu矩、Gupta矩)以及局部描述符(SIFT、SURF)和稀疏表示方法。同时介绍了特征选择的过滤法、包装法和嵌入法,并结合Matlab代码示例展示了各类特征的实际提取过程。文章最后总结了当前技术的应用现状,并展望了深度学习在X射线图像分析中的未来潜力。

pz89012345的博客 134

手把手教你学Simulink实例:基于Simulink的超级电容器充放电仿真

超级电容器(Supercapacitor)是一种高容量电容器,具有快速充放电能力、长寿命和高功率密度等优点。它在能量存储系统、电动汽车、不间断电源(UPS)等领域有广泛应用。为了更好地理解和设计超级电容器的应用系统,通常需要进行详细的仿真分析。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证超级电容器充放电系统的控制策略。本教程将详细介绍如何使用 Simulink 进行超级电容器充放电的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行超级电容器充放电的仿真实例。

MHD0815的博客 581

# Kubernetes(K8s)笔记Day12 :K8s 七层代理(Ingress 和 Ingress Controller)

Ingress是 Kubernetes 中专门用来管理集群外部流量如何访问集群内部服务的 API 资源(规则文件)。它工作在第七层(应用层,HTTP/HTTPS),能够提供比 Service 更智能、更灵活的路由能力。Ingress 规则是“全集群生效的逻辑规则”,它不依赖于具体的物理节点。无论流量从哪个节点进入,只要集群中的 Ingress Controller 正常运行,规则就会执行。你只需维护一份 Ingress 文件,就能为整个集群提供七层路由能力是一个七层负载均衡调度器。

weixin_46136019的博客 509

华为OD机试 - 服务中心选址(Python)

一个快递公司希望在一条街道建立新的服务中心。公司统计了该街道中所有区域在地图上的位置,并希望能够以此为依据为新的服务中心选址:使服务中心到所有区域的距离的总和最小。先输入区域数组positions的长度n(1 ≤ n ≤ 10^5)接下来 n 行每行输入成对的left和right值,以空格隔开。输出为location。

m0_46181452的博客 282

Kubernetes之Ingress Controller

3.4 安装Nginx-Ingress-Controller 创建配置文件: 在 master 节点中创建一个名称为 nginx-ingress-controller.yaml 的配置文件,该配置文件中定义了安装Nginx-Ingress-Controller所需要的各种资源,该yaml 配置文件的内容参考了官方示例 https://raw.githubusercontent.com/kube...

Java大数据联盟 1296

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

kubernetes 部署 Ingress Controller(nginx ingress)

如有问题,以你为准

sxpnp的博客 650

WINCC7.3破解文件

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

Kubernetes Ingress Controller 使用教程

Kubernetes Ingress Controller 使用教程 1. 项目介绍 Kubernetes Ingress Controller 是一个用于 Kubernetes 的 Ingress 控制器,它使用 NGINX 作为反向代理和负载均衡器。该项目的主要目的是为 Kubernetes 集群提供外部访问服务的统一入口,通过 Ingress 资源来管理 HTTP 和 HTTPS 路由。 2...

gitblog_00245的博客 967

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【云原生 | Kubernetes 实战】19、K8s Ingress-Controller 高可用方案

K8s Ingress-Controller 高可用方案

GG Bond 的博客 2922

k8s ingress配置自签名证书,并解决Kubernetes Ingress Controller Fake Certificate

生成自签名证书 参考https://hknaruto.blog.youkuaiyun.com/article/details/79556245 得到密钥及证书文件:hknaruto.com.key, hknaruto.com.pem 创建k8s secret [yeqiang@localhost openssl-CA]$ kubectl create secret tls hknaruto.com --cert=hknaruto.com.pem --key=hknaruto.com.key -n ..

hknaruto的专栏 1万+

k8s对外服务之ingress,ingress-controller

ingress-controller才是负责具体转发的组件,通过各种方式将它暴露在集群入口,外部对集群的请求流量会先到 ingress-controller, 而ingress对象是用来告诉ingress-controller该如何转发请求,比如哪些域名、哪些URL要转发到哪些service等等。

mikechen1的博客 2034

k8s学习--ingress详细解释与应用(nginx ingress controller))

Ingress 是 Kubernetes 中用于管理集群内服务暴露的 API 资源。它提供了 HTTP 和 HTTPS 路由功能,使外部流量能够访问集群内部的服务。通过定义 Ingress 资源,可以控制哪些外部请求能够访问集群中的哪些服务,以及如何路由这些请求。

2509_92408336的博客 729

k8s ingress-controller

在 Kubernetes 的世界中,Ingress 是一种神奇的存在,它像一个智能门卫,控制着外部流量如何访问集群内的微服务。Ingress 不仅简化了服务的暴露过程,还提供了负载均衡、SSL 证书管理等实用功能。本文将带你快速了解 Kubernetes Ingress 的基本概念和配置方法,让你的服务部署更加得心应手Ingress 专注于处理外部流量,提供更丰富的路由和安全特性现在我们来安装配置一下ingress-controllerk8s-master。

weixin_63294004的博客 1260
上一篇: Kubernetes外挂配置管理—ConfigMap介绍
下一篇: kubernetes(k8s) ingress及ingress docker-controller
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值