国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CKA 10_Kubernetes工作負載與調(diào)度 資源調(diào)度 資源限制 LimitRanger 資源配額 ResourceQuota

這篇具有很好參考價值的文章主要介紹了CKA 10_Kubernetes工作負載與調(diào)度 資源調(diào)度 資源限制 LimitRanger 資源配額 ResourceQuota。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 資源調(diào)度

官方文檔: 概念 | 策略 | 限制范圍

官方文檔: 概念 | 策略 | 資源配額

1.1 資源限制

  • 默認情況下, Kubernetes 集群上的容器運行使用的計算資源沒有限制。 使用資源配額,集群管理員可以以名字空間為單位,限制其資源的使用與創(chuàng)建。 在命名空間中,一個 Pod 或 Container 最多能夠使用命名空間的資源配額所定義的 CPU 和內(nèi)存用量。 有人擔心,一個 Pod 或 Container 會壟斷所有可用的資源。 LimitRange 是在命名空間內(nèi)限制資源分配(給多個 Pod 或 Container)的策略對象。

  • 一個 LimitRange(限制范圍) 對象提供的限制能夠做到:

    • 在一個命名空間中實施對每個 Pod 或 Container 最小和最大的資源使用量的限制。
    • 在一個命名空間中實施對每個 PersistentVolumeClaim 能申請的最小和最大的存儲空間大小的限制。
    • 在一個命名空間中實施對一種資源的申請值和限制值的比值的控制。
    • 設(shè)置一個命名空間中對計算資源的默認申請/限制值,并且自動的在運行時注入到多個 Container 中。
  • 限制范圍總覽

    • 管理員在一個命名空間內(nèi)創(chuàng)建一個 LimitRange 對象。
    • 用戶在命名空間內(nèi)創(chuàng)建 Pod ,Container 和 PersistentVolumeClaim 等資源。
    • LimitRanger 準入控制器對所有沒有設(shè)置計算資源需求的 Pod 和 Container 設(shè)置默認值與限制值, 并跟蹤其使用量以保證沒有超出命名空間中存在的任意 LimitRange 對象中的最小、最大資源使用量以及使用量比值。
    • 若創(chuàng)建或更新資源(Pod、 Container、PersistentVolumeClaim)違反了 LimitRange 的約束, 向 API 服務(wù)器的請求會失敗,并返回 HTTP 狀態(tài)碼 403 FORBIDDEN 與描述哪一項約束被違反的消息。
    • 若命名空間中的 LimitRange 啟用了對 cpu 和 memory 的限制, 用戶必須指定這些值的需求使用量與限制使用量。否則,系統(tǒng)將會拒絕創(chuàng)建 Pod。
    • LimitRange 的驗證僅在 Pod 準入階段進行,不對正在運行的 Pod 進行驗證。

1.1.1 namespace 設(shè)置 資源限制

  1. 設(shè)置資源限制
  • 內(nèi)存中不能有 swap 分區(qū)
  • 內(nèi)存是不可壓縮的資源,而 CPU 可以壓縮。如果內(nèi)存超出了限制,那么會被直接殺死,但是 CPU 不會
[root@k8s-1 ~]# vim limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: limitrange-demo
spec:
  limits:				// 上限
  - default:			// 當 limit 不設(shè)置時,cpu 和 memory 的上限默認為 0.5 和 512Mi
      cpu: 0.5			
      memory: 512Mi
    defaultRequest:		// 當默認不設(shè)置時,cpu 和 memory 最小為 0.1 和 256Mi
      cpu: 0.1
      memory: 256Mi
    max:				// 最大不能超過這個值
      cpu: 1
      memory: 1Gi
    min:				// 最小不能低于這個值
      cpu: 0.1
      memory: 100Mi
    type: Container
  1. 生效后,查看資源限制的狀態(tài)信息
[root@k8s-1 ~]# kubectl apply -f limitrange.yaml 
limitrange/limitrange-demo created
[root@k8s-1 ~]# kubectl get limitranges 
NAME              CREATED AT
limitrange-demo   2022-05-11T12:19:14Z
  • 限制的信息就是 YAML 清單中設(shè)置的
[root@k8s-1 ~]# kubectl describe limitranges 
Name:       limitrange-demo
Namespace:  default
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   cpu       100m   1    100m             500m           -
Container   memory    100Mi  1Gi  256Mi            512Mi          -
  1. 測試資源限制,創(chuàng)建名為 demo 的 Pod
[root@k8s-1 ~]# kubectl run demo --image=nginx
pod/demo created
[root@k8s-1 ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          90s
  • 查看 Pod 的上線狀態(tài),發(fā)現(xiàn) Pod 的資源被限制

  • 因為 Pod 沒有設(shè)定 limit 和 request,所以,限制是跟著 Default 走的

  • 上限為 500m 的 CPU 和 512Mi 的 內(nèi)存

  • 最小的請求量為 100m 的 CPU 和 256Mi 的 內(nèi)存

  • 以上限制內(nèi)容都是 資源限制 limitranger 中設(shè)置的

[root@k8s-1 ~]# kubectl describe pod demo
    Limits:
      cpu:     500m
      memory:  512Mi
    Requests:
      cpu:        100m
      memory:     256Mi

Volumes:
  kube-api-access-j8c98:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
  1. 刪除該 Pod 后,創(chuàng)建設(shè)置了資源限制的 Pod
  • 快速生成 Pod 的 YAML 模板
[root@k8s-1 ~]# kubectl run demo --image=nginx --dry-run=client -o yaml > pod.yaml
[root@k8s-1 ~]# kubectl run demo --image=nginx --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demo
  name: demo
spec:
  containers:
  - args:
    - pod.yaml
    image: nginx
    name: demo
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
  • 修改 Pod.yaml
  • CPU 最小不能低于 1
  • CPU 最大不能超過 2
[root@k8s-1 ~]# vim pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
    resources: 
      requests:
        cpu: 1
      limits:
        cpu: 2
  • 生效時,出現(xiàn)報錯。
  • 因為 Pod 的 request 設(shè)置的是 1 ,limit 設(shè)置的是 2
  • 而 資源限制 limitranger 要求當Pod 設(shè)置限制時, 其 CPU 最小不能低于 100m,最大不能超過 1
  • 當前 Pod 的 CPU limit 超出了 limitranger 的限制
[root@k8s-1 ~]# kubectl apply -f pod.yaml 
Error from server (Forbidden): error when creating "pod.yaml": pods "demo" is forbidden: maximum cpu usage per Container is 1, but limit is 2
[root@k8s-1 ~]# kubectl describe limitranges 
Name:       limitrange-demo
Namespace:  default
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   cpu       100m   1    100m             500m           -
Container   memory    100Mi  1Gi  256Mi            512Mi          -
  1. LimitRange 在 namespace 中施加的最小和最大內(nèi)存限制只有在創(chuàng)建和更新 Pod 時才會被應(yīng)用。改變 LimitRange 不會對之前創(chuàng)建的 Pod 造成影響。

1.2 資源配額

  • 當多個用戶或團隊共享具有固定節(jié)點數(shù)目的集群時,人們會擔心有人使用超過其基于公平原則所分配到的資源量。

  • 資源配額是幫助管理員解決這一問題的工具。

  • 資源配額,通過 ResourceQuota 對象來定義,對每個命名空間的資源消耗總量提供限制。 它可以限制命名空間中某種類型的對象的總數(shù)目上限,也可以限制命令空間中的 Pod 可以使用的計算資源的總上限。

  • 資源配額的工作方式如下:

    • 不同的團隊可以在不同的命名空間下工作,目前這是非約束性的,在未來的版本中可能會通過 ACL (Access Control List 訪問控制列表) 來實現(xiàn)強制性約束。

    • 集群管理員可以為每個命名空間創(chuàng)建一個或多個 ResourceQuota 對象。

    • 當用戶在命名空間下創(chuàng)建資源(如 Pod、Service 等)時,Kubernetes 的配額系統(tǒng)會 跟蹤集群的資源使用情況,以確保使用的資源用量不超過 ResourceQuota 中定義的硬性資源限額。

    • 如果資源創(chuàng)建或者更新請求違反了配額約束,那么該請求會報錯(HTTP 403 FORBIDDEN), 并在消息中給出有可能違反的約束。

    • 如果命名空間下的計算資源 (如 cpu 和 memory)的配額被啟用,則用戶必須為 這些資源設(shè)定請求值(request)和約束值(limit),否則配額系統(tǒng)將拒絕 Pod 的創(chuàng)建。 提示: 可使用 LimitRanger 準入控制器來為沒有設(shè)置計算資源需求的 Pod 設(shè)置默認值。文章來源地址http://www.zghlxwxcb.cn/news/detail-481070.html

1.2.1 namespace 設(shè)置 資源配額

1.2.1.1 限制 內(nèi)存 和 CPU
  1. 設(shè)置資源配額
  • CPU 最少不能低于 1
  • 內(nèi)存 最少不能低于 1Gi
  • CPU 最大不能超過 2
  • 內(nèi)存 最大不能超過 2Gi
[root@k8s-1 ~]# vim quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
  1. 生效 資源配額
[root@k8s-1 ~]# kubectl apply -f quota.yaml 
resourcequota/mem-cpu-demo created
  1. 對 namespace 加了 資源配額 之后,創(chuàng)建的 Pod 都必須設(shè)置 資源限制 limitranger ,不設(shè)置會報錯
  2. 模擬故障:刪除 limitranger 資源限制,令當前處于只有 資源配額 ,沒有 資源限制 的狀態(tài)
  • 假設(shè)刪除了 limitranger ,那么當前 namespace 是沒有任何 資源限制
[root@k8s-1 ~]# kubectl delete -f limitrange.yaml 
limitrange "limitrange-demo" deleted
[root@k8s-1 ~]# kubectl get limitranges 
No resources found in default namespace.
  • 創(chuàng)建 Pod 發(fā)現(xiàn)報錯,無法創(chuàng)建
  • 因為 Pod 沒有 資源限制
[root@k8s-1 ~]# kubectl run demo --image=nginx
Error from server (Forbidden): pods "demo" is forbidden: failed quota: mem-cpu-demo: must specify limits.cpu,limits.memory,requests.cpu,requests.memory
  • 生效 資源限制
[root@k8s-1 ~]# kubectl apply -f limitrange.yaml 
limitrange/limitrange-demo created
  • 再次 創(chuàng)建 Pod ,發(fā)現(xiàn)創(chuàng)建成功
  • 因為創(chuàng)建了 資源限制 limitrange 的 namespace 會自動為 Pod 施加限制
  • limitranger 限制 Pod 的 資源如下,在 資源配額 的要求范圍內(nèi)
[root@k8s-1 ~]# kubectl run demo --image=nginx
pod/demo created
[root@k8s-1 ~]# kubectl describe pod demo
    Limits:
      cpu:     500m
      memory:  512Mi
    Requests:
      cpu:        100m
      memory:     256Mi
  1. 查看 資源配額 中 已使用部分和未使用部分
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used   Hard
--------         ----   ----
limits.cpu       500m   2
limits.memory    512Mi  2Gi
requests.cpu     100m   1
requests.memory  256Mi  1Gi
  1. 資源配額也限制了 Pod 的數(shù)量
[root@k8s-1 ~]# kubectl run demo2 --image=nginx
pod/demo2 created
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used   Hard
--------         ----   ----
limits.cpu       1      2
limits.memory    1Gi    2Gi
requests.cpu     200m   1
requests.memory  512Mi  1Gi
[root@k8s-1 ~]# kubectl run demo3 --image=nginx
pod/demo3 created
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used    Hard
--------         ----    ----
limits.cpu       1500m   2
limits.memory    1536Mi  2Gi
requests.cpu     300m    1
requests.memory  768Mi   1Gi
  • 當前已經(jīng)有 4 個 Pod 了,資源配額已使用完
[root@k8s-1 ~]# kubectl run demo4 --image=nginx
pod/demo4 created
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used  Hard
--------         ----  ----
limits.cpu       2     2
limits.memory    2Gi   2Gi
requests.cpu     400m  1
requests.memory  1Gi   1Gi
  • 再次創(chuàng)建 Pod 會報錯,因為已經(jīng)沒有足夠的資源配額了
[root@k8s-1 ~]# kubectl run demo5 --image=nginx
Error from server (Forbidden): pods "demo5" is forbidden: exceeded quota: mem-cpu-demo, requested: limits.cpu=500m,limits.memory=512Mi,requests.memory=256Mi, used: limits.cpu=2,limits.memory=2Gi,requests.memory=1Gi, limited: limits.cpu=2,limits.memory=2Gi,requests.memory=1Gi
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used  Hard
--------         ----  ----
limits.cpu       2     2
limits.memory    2Gi   2Gi
requests.cpu     400m  1
requests.memory  1Gi   1Gi
  1. 留下一個 Pod
[root@k8s-1 ~]# kubectl delete pod demo2 --force 
[root@k8s-1 ~]# kubectl delete pod demo3 --force 
[root@k8s-1 ~]# kubectl delete pod demo4 --force 
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used   Hard
--------         ----   ----
limits.cpu       500m   2
limits.memory    512Mi  2Gi
requests.cpu     100m   1
requests.memory  256Mi  1Gi
  1. 配額資源限制資源限制 范圍大。
    資源限制 是指限制 Pod 每次使用的資源;
    而 配額資源限制 是指限制所有 Pod 使用的資源總和;
    如果只創(chuàng)建了 配額資源限制,沒有創(chuàng)建 資源限制,
    那么可能創(chuàng)建的第一個 Pod 就把所有的 配額資源 使用了,導致不能再創(chuàng)建多余的 Pod
1.2.1.2 限制 Pod 數(shù)量
  1. 修改 資源配額 的 YAML 清單
  • 限制只能創(chuàng)建 2 個 Pod
[root@k8s-1 ~]# vim quota.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "2"
  1. 生效后,查看資源配額
  • 總共可以創(chuàng)建 2 個 Pod,已經(jīng)存在了 1 個 Pod
[root@k8s-1 ~]# kubectl apply -f quota.yaml 
resourcequota/mem-cpu-demo configured
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used   Hard
--------         ----   ----
limits.cpu       500m   2
limits.memory    512Mi  2Gi
pods             1      2
requests.cpu     100m   1
requests.memory  256Mi  1Gi
  1. 再次創(chuàng)建一個 Pod,可以創(chuàng)建成功。當前已經(jīng)有 2 個 Pod 了
[root@k8s-1 ~]# kubectl run demo2 --image=nginx
pod/demo2 created
[root@k8s-1 ~]# kubectl describe resourcequotas 
Name:            mem-cpu-demo
Namespace:       default
Resource         Used   Hard
--------         ----   ----
limits.cpu       1      2
limits.memory    1Gi    2Gi
pods             2      2
requests.cpu     200m   1
requests.memory  512Mi  1Gi
  1. 再創(chuàng)建第 3 個 Pod,發(fā)現(xiàn)創(chuàng)建失敗。已經(jīng)超出 資源配額 的限制了
[root@k8s-1 ~]# kubectl run demo3 --image=nginx
Error from server (Forbidden): pods "demo3" is forbidden: exceeded quota: mem-cpu-demo, requested: pods=1, used: pods=2, limited: pods=2

到了這里,關(guān)于CKA 10_Kubernetes工作負載與調(diào)度 資源調(diào)度 資源限制 LimitRanger 資源配額 ResourceQuota的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【云原生】kubernetes中容器的資源限制

    【云原生】kubernetes中容器的資源限制

    目錄 1 metrics-server 2 指定內(nèi)存請求和限制 3 指定 CPU 請求和限制 資源限制 在k8s中對于容器資源限制主要分為以下兩類: 內(nèi)存資源限制: 內(nèi)存 請求 (request)和內(nèi)存 限制 (limit)分配給一個容器。 我們保障容器擁有它請求數(shù)量的內(nèi)存,但不允許使用超過限制數(shù)量的內(nèi)存。 官網(wǎng)參

    2024年02月14日
    瀏覽(24)
  • 【云原生】Kubernetes工作負載-StatefulSet

    StatefulSet 是用來管理有狀態(tài)應(yīng)用的工作負載 API 對象 StatefulSet 用來管理某 Pod 集合的部署和擴縮, 并為這些 Pod 提供持久存儲和持久標識符 和 Deployment 類似, StatefulSet 管理基于相同容器規(guī)約的一組 Pod。但和 Deployment 不同的是, StatefulSet 為它們的每個 Pod 維護了一個有粘性的

    2024年02月15日
    瀏覽(20)
  • 【云原生】Kubernetes工作負載-Deployment

    一個 Deployment 為 Pod 和 ReplicaSet 提供聲明式的更新能力 你負責描述 Deployment 中的目標狀態(tài),而 Deployment 控制器(Controller) 以受控速率更改實際狀態(tài), 使其變?yōu)槠谕麪顟B(tài)。你可以定義 Deployment 以創(chuàng)建新的 ReplicaSet,或刪除現(xiàn)有 Deployment, 并通過新的 Deployment 收養(yǎng)其資源 下面是

    2024年02月16日
    瀏覽(19)
  • kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    目錄 ?一、資源限制 1、概念 1.2、Pod和容器的資源請求和限制 1.3、CPU資源單位 1.4、內(nèi)存資源單位 1.5、CPU和內(nèi)存的Requests和Limits的特點 1.6、案例 二、pod 的兩種使用方式 三、pod 資源共享 四、底層容器Pause 1、pause 共享資源 1.1、網(wǎng)絡(luò) 1.2、存儲 1.3、小結(jié) 2、Pause主要功能 3、Pod

    2024年02月05日
    瀏覽(103)
  • kubernetes scheduler 源碼解析及自定義資源調(diào)度算法實踐

    kubernetes scheduler 源碼解析及自定義資源調(diào)度算法實踐

    小到運行著幾十個工作負載的 kubernetes 集群,大到運行成千上萬個工作負載 kubernetes 集群,每個工作負載到底應(yīng)該在哪里運行,這需要一個聰明的大腦進行指揮,kubernetes scheduler 就是這個聰明的大腦。從結(jié)果看,他的工作很簡單,只是為 pod.spec.nodeName 填充上一個 node 的名字而

    2023年04月24日
    瀏覽(22)
  • Kubernetes/k8s之HPA,命名空間資源限制

    Kubernetes/k8s之HPA,命名空間資源限制

    Horizontal Pod Autoscaling:po的水平自動伸縮 這是k8s自帶的模塊 pod占用cpu比例達到一定的閥值,會觸發(fā)伸縮機制。 根據(jù)cpu的閥值觸發(fā)伸縮機制 replication controller 副本控制器 控制pod的副本數(shù) deployment controller 節(jié)點控制器 部署pod hpa控制副本的數(shù)量,以及如何控制部署pod 1、hpa基于kub

    2024年01月24日
    瀏覽(30)
  • 集群、負載均衡集群、高可用集群簡介,LVS工作結(jié)構(gòu)、工作模式、調(diào)度算法和haproxy/nginx模式拓撲介紹

    集群、負載均衡集群、高可用集群簡介,LVS工作結(jié)構(gòu)、工作模式、調(diào)度算法和haproxy/nginx模式拓撲介紹

    目錄 一.集群的定義 1.定義 2.分類 (1)負載均衡集群(LBC/LB) (2)高可用集群(HAC) 二.使用集群的意義 1.高性價比和性能比 2.高可用性 3.可伸縮性強 4.持久和透明性高 三.常見的兩種集群模式拓撲 1.LVS(-DR)集群模式 (1)工作架構(gòu) (2)LVS下的相關(guān)術(shù)語 (3)LVS的工作模式

    2024年02月13日
    瀏覽(18)
  • 5、Kubernetes核心技術(shù) - Controller控制器工作負載

    5、Kubernetes核心技術(shù) - Controller控制器工作負載

    目錄 一、Deployments - 控制器應(yīng)用 二、Deployment升級回滾和彈性收縮 2.1、創(chuàng)建一個 1.14 版本的 pod 2.2、應(yīng)用升級 2.3、查看升級狀態(tài) 2.4、查看歷史版本 2.5、應(yīng)用回滾 2.6、彈性伸縮? 三、StatefulSet - 有狀態(tài)應(yīng)用 四、DaemonSet - 守護進程 五、Job - 單次任務(wù) 六、Cronjob - 定時任務(wù) Deplo

    2024年02月15日
    瀏覽(24)
  • 持續(xù)集成部署-k8s-資源調(diào)度:HPA - Pod 基于負載指標自動水平擴容縮容

    首先我們找一個 Deployment 配置文件: nginx-deploy.yaml

    2024年02月07日
    瀏覽(29)
  • [CKA]考試之四層負載均衡service

    [CKA]考試之四層負載均衡service

    由于最新的CKA考試改版,不允許存儲書簽,本博客致力怎么一步步從官網(wǎng)把答案找到,如何修改把題做對,下面開始我們的 CKA之旅 題目為: Task 重新配置一個已經(jīng)存在的front-end的deployment,在名字為nginx的容器里面添加一個端口配置,名字為http,暴露端口號為80,然后創(chuàng)建一

    2024年02月11日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包