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

【云原生】k8s配置資源管理

這篇具有很好參考價值的文章主要介紹了【云原生】k8s配置資源管理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.Secret的資源配置?

1.1 Secret配置的相關(guān)說明?

Secret 是用來保存密碼、token、密鑰等敏感數(shù)據(jù)的 k8s 資源,這類數(shù)據(jù)雖然也可以存放在 Pod 或者鏡像中,但是放在 Secret 中是為了更方便的控制如何使用數(shù)據(jù),并減少暴露的風(fēng)險

Secret 有三種類型:?
kubernetes.io/service-account-token:由 Kubernetes 自動創(chuàng)建,用來訪問 APIServer 的 Secret,Pod 會默認(rèn)使用這個 Secret 與 APIServer 通信, 并且會自動掛載到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目錄中;
Opaque :base64 編碼格式的 Secret,用來存儲用戶自定義的密碼、密鑰等,默認(rèn)的 Secret 類型;
kubernetes.io/dockerconfigjson :用來存儲私有 docker registry 的認(rèn)證信息。

Pod 需要先引用才能使用某個 secret,Pod 有 3 種方式來使用 secret:
●作為掛載到一個或多個容器上的卷 中的文件。
●作為容器的環(huán)境變量。
●由 kubelet 在為 Pod 拉取鏡像時使用


?

?1.2 陳述式創(chuàng)建Secret配置

?Secret 的創(chuàng)建是根據(jù)文件中保存到相應(yīng)信息,進(jìn)行。例如我們要通過一個用戶名文件和密碼文件來創(chuàng)建具體的Secret資源配置。

#首先準(zhǔn)備好相對應(yīng)的用戶和密碼文件
#echo 中 “-n” 選項(xiàng)為不換行
echo -n 'zhangsan'>username.txt
echo -n 'abc1234'>passwd.txt
?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

#進(jìn)行陳述創(chuàng)建secret配置
?
kubectl create secret generic mysecret --from-file=username.txt --from-file=password.txt

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

kubectl describe secrets mysecret?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

1.3 聲明式+base64編碼創(chuàng)建Secret?

echo zhangsan|base64
echo abc1234|base64

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?#對已存在的secret資源進(jìn)行模板導(dǎo)入yaml文件
kubectl get secrets mysecret -o yaml >secrets-demo.yaml
#對模板進(jìn)行修改編輯
vim secrets-demo.yaml?
?
apiVersion: v1
kind: Secret
metadata:
? name: mysecret1
? namespace: default
type: Opaque
data:
? username: emhhbmdzYW4K
? passwd: YWJjMTIzNAo=
?
kubectl apply -f secrets-demo.yaml?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

?1.4 將secret以volume形式掛載到pod中

#創(chuàng)建一個pod模板,對其進(jìn)行修改編輯
kubectl run nginx --image=nginx:1.14 --dry-run=client -o yaml > secret-test.yaml
?
vim scret-test.yaml
?
apiVersion: v1
kind: Pod
metadata:
? name: mypod
spec:
? containers:
? - image: nginx:1.14
? ? name: nginx
? ? volumeMounts:
? ? - name: secrets
? ? ? mountPath: "/opt/secrets"
? ? ? readOnly: true
? volumes:
? - name: secrets
? ? secret:
? ? ? secretName: mysecret1
?
?
?
kubectl creat -f scret-test.yaml

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

1.5? 將Secret導(dǎo)入到pod中,充當(dāng)環(huán)境變量

#復(fù)制上一個模板,進(jìn)行修改編輯
cp secret-test.yaml secret-env.yaml
?
#進(jìn)行編輯修改
vim secret-env.yaml
?
apiVersion: v1
kind: Pod
metadata:
? name: mypod
spec:
? containers:
? - image: nginx:1.14
? ? name: nginx
? ? env:
? ? - name: TEST_USER
? ? ? valueFrom:
? ? ? ? secretKeyRef:
? ? ? ? ? name: mysecret1
? ? ? ? ? key: username
? ? - name: TEST_PASSWD
? ? ? valueFrom:
? ? ? ? secretKeyRef:
? ? ? ? ? name: mysecret1
? ? ? ? ? key: passwd
? ? envFrom:
? ? - secretRef:
? ? ? ? name: mysecret1
?
kubectl create -f secret-env.yaml ? ? ? ? ? ? ? ? ? ? ??
?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?1.6 實(shí)戰(zhàn)運(yùn)用:使用secret配置免密交互拉取habor私有倉庫鏡像?

?我們在搭建好docker的私有倉庫后,在使用私有倉庫時需要通過docker login指令來登錄到私有倉庫中。但同時在使用的過程中也會把habor倉庫的用戶名和密碼暴露在命令行中,存在一定的安全隱患。k8s中的secret配置的運(yùn)用能夠?qū)崿F(xiàn)并且規(guī)避這一問題的存在

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

?進(jìn)行私有倉庫的secret資源創(chuàng)建

#私有倉庫的secret配置
kubectl create secret docker-registry myharbor --docker-server=192.168.73.108 --docker-username=admin --docker-password=Harbor12345 --docker-email=admin@qq.com

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?引用secret資源拉取私有倉庫鏡像創(chuàng)建pod?

vim harbor-test.yaml
?
apiVersion: v1
kind: Pod
metadata:
? name: harbor-pod
spec:
? nodeName: node02
? imagePullSecrets:
? - name: myharbor
? containers:
? - image: 192.168.73.108/test/nginx-test:v1
? ? name: harbor-pod
? dnsPolicy: ClusterFirst
? restartPolicy: Always ? ? ??

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

注意:登錄harbor倉庫的默認(rèn)配置為https,所以我們要在配置上修改(所有node節(jié)點(diǎn),如果只是測試,可以在pod中指定node節(jié)點(diǎn),修改一個node即可):

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

?2.ConfigMap資源配置

與Secret類似,區(qū)別在于ConfigMap保存的是不需要加密配置的信息。
ConfigMap 功能在 Kubernetes1.2 版本中引入,許多應(yīng)用程序會從配置文件、命令行參數(shù)或環(huán)境變量中讀取配置信息。ConfigMap API 給我們提供了向容器中注入配置信息的機(jī)制,ConfigMap 可以被用來保存單個屬性,也可以用來保存整個配置文件或者JSON二進(jìn)制大對象。
應(yīng)用場景:應(yīng)用配置

?

?2.1 使用目錄來創(chuàng)建configMap資源

?創(chuàng)建一個目錄并且在一個目錄中填寫兩個文件:

mkdir /opt/configmap/
?
vim /opt/configmap/game.config
enemy.types=aliens,monsters
player.maximum-lives=5?
?
vim /opt/configmap/ui.config
color.good=purple
color.bad=yellow
allow.textmode=true
?
ls /opt/configmap/

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

kubectl create configmap game-config --from-file=/opt/configmap/
//--from-file 指定在目錄下的所有文件都會被用在 Con?gMap 里面創(chuàng)建一個鍵值對,鍵的名字就是文件名,值就是文件的內(nèi)容

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

2.2 使用文件創(chuàng)建configMap資源?

#只要指定為一個文件就可以從單個文件中創(chuàng)建 Con?gMap
--from-file 這個參數(shù)可以使用多次,即可以使用兩次分別指定上個實(shí)例中的那兩個配置文件,效果就跟指定整個目錄是一樣的
kubectl create configmap game-config2 --from-file=/opt/configmap/game.config --from-file=/opt/configmap/ui.config?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

2.3 直接使用參數(shù)創(chuàng)建confidenceMap資源

#使用文字值創(chuàng)建,利用 --from-literal 參數(shù)傳遞配置信息,該參數(shù)可以使用多次
?
kubectl create configmap special-config --from-literal=name=zhangsan --from-literal=sex=man

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

2.4 pod利用configMap資源

(1)使用 ConfigMap 來替代環(huán)境變量

vim env.yaml
apiVersion: v1
kind: ConfigMap
metadata:
? name: special-config
? namespace: default
data:
? special.how: very
? special.type: good
---
apiVersion: v1
kind: ConfigMap
metadata:
? name: env-config
? namespace: default
data:
? log_level: INFO
?
?
kubectl create -f env.yaml?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

?(2)創(chuàng)建pod,并且引用configMap資源

vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
? name: test-pod
spec:
? containers:
? - name: busybox
? ? image: busybox:1.28.4
? ? command: [ "/bin/sh", "-c", "env" ]
? ? env:
? ? ? - name: SPECIAL_HOW_KEY
? ? ? ? valueFrom:
? ? ? ? ? configMapKeyRef:
? ? ? ? ? ? name: special-config
? ? ? ? ? ? key: special.how
? ? ? - name: SPECIAL_TYPE_KEY
? ? ? ? valueFrom:
? ? ? ? ? configMapKeyRef:
? ? ? ? ? ? name: special-config
? ? ? ? ? ? key: special.type
? ? envFrom:
? ? ? - configMapRef:
? ? ? ? ? name: env-config
? restartPolicy: Never

【云原生】k8s配置資源管理,云原生,kubernetes,容器

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

2.5 使用 ConfigMap 設(shè)置命令行參數(shù)??

?vim test-pod2.yaml
apiVersion: v1
kind: Pod
metadata:
? name: test-pod2
spec:
? containers:
? - name: busybox
? ? image: busybox:1.28.4
? ? command:?
?? ?- /bin/sh
?? ?- -c
?? ?- echo "$(SPECIAL_HOW_KEY) $(SPECIAL_TYPE_KEY)"
? ? env:
? ? ? - name: SPECIAL_HOW_KEY
? ? ? ? valueFrom:
? ? ? ? ? configMapKeyRef:
? ? ? ? ? ? name: special-config
? ? ? ? ? ? key: special.how
? ? ? - name: SPECIAL_TYPE_KEY
? ? ? ? valueFrom:
? ? ? ? ? configMapKeyRef:
? ? ? ? ? ? name: special-config
? ? ? ? ? ? key: special.type
? ? envFrom:
? ? ? - configMapRef:
? ? ? ? ? name: env-config
? restartPolicy: Never
?
?
kubectl create -

f test-pod2.yaml

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

2.6?通過數(shù)據(jù)卷插件使用Con?gMap??

?在數(shù)據(jù)卷里面使用 Con?gMap,就是將文件填入數(shù)據(jù)卷,在這個文件中,鍵就是文件名,鍵值就是文件內(nèi)容

vim test-pod3.yaml
apiVersion: v1
kind: Pod
metadata:
? name: test-pod3
spec:
? containers:
? - name: busybox
? ? image: busybox:1.28.4
? ? command: [ "/bin/sh", "-c", "sleep 36000" ]
? ? volumeMounts:
? ? - name: config-volume
? ? ? mountPath: /etc/config
? volumes:
? ? - name: config-volume
? ? ? configMap:
? ? ? ? name: special-config
? restartPolicy: Never
?
?
##volumes字段中如果configMap中我們只想指定其中的一部分配置
可以通過:
items:
- key: xx
? path: xxx/xxxx
- key: xxx
? path: xxxx/xxxx

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?【云原生】k8s配置資源管理,云原生,kubernetes,容器

?比如:我想通過configMap實(shí)現(xiàn)單獨(dú)掛載pod中的nginx.conf配置?

#首先獲取nginx.conf 下載或則之前保存都可以
#nginx.conf 在/opt/conf/ 下
kubectl create cm mycm-nginx --from-file=/opt/conf
?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

vim pod-demo1.yaml?
apiVersion: v1
kind: Pod
metadata:
? name: mypod
spec:
? volumes:
? - name: nginx
? ? configMap:
? ? ? name: mycm-nginx
? containers:
? - image: nginx:1.14
? ? name: nginx
? ? volumeMounts:
? ? - name: nginx
? ? ? mountPath: /etc/nginx/nginx.conf
? ? ? subPath: nginx.conf ? ? #subPath ?可以實(shí)現(xiàn)只覆蓋修改該文件,而不影響目錄
?
kubectl apply -f pod-demo1.yaml

2.7 configMap的熱更新

?volume掛載的configMap的熱更新:

#創(chuàng)建一個cm資源
kubectl create configmap name-config --from-literal=name=zhangsan
?
#創(chuàng)建一個pod,并且通過volume的方式掛載configMap中的name-config
vim ?pod-demo1.yaml
apiVersion: v1
kind: Pod
metadata:
? name: namepod
spec:
? volumes:
? - name: update-test
? ? configMap:
? ? ? name: name-config
? containers:
? - image: nginx:1.14
? ? name: mypod
? ? volumeMounts:
? ? - name: update-test
? ? ? mountPath: /opt/name.txt

【云原生】k8s配置資源管理,云原生,kubernetes,容器

進(jìn)行實(shí)時更新修改(開啟另一個終端):

kubectl ?edit cm name-config?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

【云原生】k8s配置資源管理,云原生,kubernetes,容器

?

?PS:更新 ConfigMap 后:
●使用該 ConfigMap 掛載的 Env 不會同步更新。
●使用該 ConfigMap 掛載的 Volume 中的數(shù)據(jù)需要一段時間(實(shí)測大概10秒)才能同步更新。

??總結(jié)

使用 Secret 資源
掛載的方式
在 pod.spec.volumes 字段中定義卷類型為 secret?
在 pod.spec.containers.volumeMounts 字段中把存儲卷掛載到指定的容器目錄,secret資源數(shù)據(jù)的key將以文件名的形式存在,value為文件內(nèi)容
?
容器環(huán)境變量引用的方式
在 pod.spec.containers.env.name 字段中自定義容器的環(huán)境變量名
在.containers.env.valueFrom.secretKeyRef.name字段中指定secret資源的名稱,.containers.env.valueFrom.secretKeyRef.key字段中指定這個secret資源數(shù)據(jù)的key, 從而確定引用那個secret資源的key的value作為這個環(huán)境變量的值
在 .containers.envFrom.secretRef.name 字段中指定secret資源的名稱,可實(shí)現(xiàn)使用secret資源數(shù)據(jù)的key作為容器環(huán)境變量名,value作為這個環(huán)境變量的值
?
K8S從私有倉庫拉取鏡像時使用
在 pod.spec.imagePullSecrets 字段中指定 kubernetes.io/dockerconfigjson 類型的 secret 資源來作為連接私有倉庫的認(rèn)證信息
?
?
ConfigMap ?簡稱 ?cm ,保存配置文件 ?環(huán)境變量 命令行參數(shù) 之類的不需要加密的信息
創(chuàng)建 cm 資源
kubectl create ?cm ?XXX --from-file=文件/目錄 ? ?--from-literal=變量的鍵值對(key=value)
?
查看cm資源的數(shù)據(jù),數(shù)據(jù)以明文格式顯示key的value
kubectl describe cm ?XXX ? 或 ? ?kubectl get cm XXX -o yaml
?
使用 cm 資源
容器環(huán)境變量引用的方式
env 指定自定義的環(huán)境變量名,通過指定的cm資源名稱和key來給這個變量賦值
envFrom ?直接使用cm資源的key作為容器的環(huán)境變量名,key的value作為這個變量的值
?
掛載的方式
volumes 定義卷類型為 configMap ,使用 items 字段可以自定義掛載的文件的子目錄和文件名
volumeMounts ?把卷掛載到容器目錄。cm資源數(shù)據(jù)中的key以文件名的形式存在,value為文件內(nèi)容 ??
?? ??? ??? ? ?使用 subPath 指定文件名,實(shí)現(xiàn)只把卷掛載到指定的文件名上
?
cm資源熱更新
更新cm資源的數(shù)據(jù)可以同步更新通過掛載的方式使用cm資源數(shù)據(jù)的Pod中的配置(注:使用subPath掛載的文件不會更新)
如果使用env或envFrom引用環(huán)境變量的方式,是不會同步更新Pod中的配置
?文章來源地址http://www.zghlxwxcb.cn/news/detail-544242.html

到了這里,關(guān)于【云原生】k8s配置資源管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • yum部署kubernetes(k8s)集群、k8s常用資源管理

    目錄 一、環(huán)境搭建 1、準(zhǔn)備環(huán)境 1)計(jì)算機(jī)說明,建議系統(tǒng)版本7.4或者7.6 2)修改所有主機(jī)的計(jì)算機(jī)名設(shè)置host文件 ?2、安裝master節(jié)點(diǎn) 1)安裝etcd配置etcd 2)安裝k8s-master節(jié)點(diǎn) 3)配置apiserver 4)配置controller和scheduler 5)啟動k8s服務(wù) 3、安裝k8s-master上的node 1)安裝node 2)配置kube

    2024年02月13日
    瀏覽(35)
  • 【云原生】k8s聲明式資源管理

    【云原生】k8s聲明式資源管理

    ? kubectl get deployment nginx -o yaml //解釋資源配置清單 kubectl explain deployment.metadata 查看deployment資源清單? ? ? ?離線修改 離線修改的過程: (1)首先將配置資源導(dǎo)入通過重定向符號導(dǎo)入到y(tǒng)aml文件中 (2)通過vim編輯器進(jìn)行yaml配置文件,刪除多余的選項(xiàng),修改配置項(xiàng),進(jìn)行保存

    2024年02月12日
    瀏覽(17)
  • 【云原生】k8s中kubectl陳述式資源管理

    【云原生】k8s中kubectl陳述式資源管理

    陳述式資源管理方法 --主要依賴命令行工具kubectl進(jìn)行管理 優(yōu)點(diǎn) 可以滿足90%以上的使用場景 對資源的增、刪、查操作比較容易 缺點(diǎn) 命令冗長,復(fù)雜,難以記憶 特定場景下,無法實(shí)現(xiàn)管理需求 對資源的修改麻煩,需要patch來使用json串更改。 聲明式資源管理方法 主要依賴統(tǒng)一

    2024年02月12日
    瀏覽(21)
  • 云原生(第三篇)-k8s資源管理的兩種方式

    云原生(第三篇)-k8s資源管理的兩種方式

    1.kubernetes 集群管理集群資源的唯一入口是通過相應(yīng)的方法調(diào)用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于與 apiserver 進(jìn)行通信,將用戶在命令行輸入的命令,組織并轉(zhuǎn)化為 apiserver 能識別的信息,進(jìn)而實(shí)現(xiàn)管理 k8s 各種資源的一種有效途徑 3.kubectl 的命令大全 kubectl

    2024年02月13日
    瀏覽(39)
  • 【K8S 】K8S配置資源管理

    【K8S 】K8S配置資源管理

    1、概念 用來保存密碼。token,敏感的K8S資源 這類數(shù)據(jù)可以直接存放在鏡像中,但是放在Secret中可以更方便的控制,減少暴露的風(fēng)險 Secret:保存加密的信息 2、Secret類型: docker-registry:存儲docker倉庫的認(rèn)證信息,以及docker的組件認(rèn)證信息(私有) generic:是Secret的默認(rèn)模式,

    2024年01月17日
    瀏覽(23)
  • k8s配置資源管理

    k8s配置資源管理

    Secret Configmap Secret :保存密碼,token,敏感的k8s資源 這類數(shù)據(jù)可以存放在鏡像當(dāng)中,但是防止secret當(dāng)中可以更方便控制,減少暴露的風(fēng)險 保存加密的信息 Docker-registry: 存儲docker倉庫認(rèn)證信息,以及docker組件認(rèn)證成功(私有) Generic: 是secret的默認(rèn)模式,opaque base64加密編碼的

    2024年01月21日
    瀏覽(30)
  • k8s- 配置資源管理

    配置資源管理 //Secret Secret 是用來保存密碼、token、密鑰等敏感數(shù)據(jù)的 k8s 資源,這類數(shù)據(jù)雖然也可以存放在 Pod 或者鏡像中,但是放在 Secret 中是為了更方便的控制如何使用數(shù)據(jù),并減少暴露的風(fēng)險。 Secret 有四種類型:? ●kubernetes.io/service-account-token:由 Kubernetes 自動創(chuàng)建,

    2024年02月16日
    瀏覽(30)
  • k8s---配置資源管理

    k8s---配置資源管理

    目錄 內(nèi)容預(yù)知 secret資源配置 secert的幾種模式 pod如何來引用secret 陳述式創(chuàng)建secret 聲明式+base64編碼配置secret 將secret用vlumes的方式掛載到pod中 傳參的方式將環(huán)境變量導(dǎo)入pod 如何通過secret加密方式獲取倉庫密碼 configmap的資源配置 陳述式創(chuàng)建configmap資源配置 聲明式配置configma

    2024年01月21日
    瀏覽(65)
  • k8s的配置資源管理

    Secret用來保存密碼、token密鑰以及一些敏感的k8s資源。這類數(shù)據(jù)雖然可以存放在鏡像當(dāng)中,但是放在secret當(dāng)中可以更方便控制。減少暴露的風(fēng)險。 Secret的作用:保存加密的信息 docker-registry()主要用于存儲docker倉庫的認(rèn)證信息,以及docker組件認(rèn)證信息。(私有) generic(jienairuike)是

    2024年01月17日
    瀏覽(23)
  • K8S:配置資源管理 Secret和configMap

    K8S:配置資源管理 Secret和configMap

    (1)Secret 是用來保存密碼、token、密鑰等敏感數(shù)據(jù)的 k8s 資源,這類數(shù)據(jù)雖然也可以存放在 Pod 或者鏡像中,但是放在 secret 中是為了更方便的控制如何使用數(shù)據(jù),并減少暴露的風(fēng)險 (2)類似掛載的方式,使用的時候調(diào)用即可 ①kubernetes.io/service-account-token 由Kubernetes自動創(chuàng)建

    2024年02月03日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包