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

Kubeadm方式搭建K8s集群【1.27.0版本】

這篇具有很好參考價值的文章主要介紹了Kubeadm方式搭建K8s集群【1.27.0版本】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、集群規(guī)劃及架構(gòu)

官方文檔:

二進(jìn)制下載地址

環(huán)境規(guī)劃:

  • pod網(wǎng)段:10.244.0.0/16
  • service網(wǎng)段:10.10.0.0/16
  • 注意: pod和service網(wǎng)段不可沖突,如果沖突會導(dǎo)致K8S集群安裝失敗。
主機(jī)名 IP地址 操作系統(tǒng)
master-1 16.32.15.200 CentOS7.8
node-1 16.32.15.201 CentOS7.8
node-2 16.32.15.202 CentOS7.8

二、系統(tǒng)初始化準(zhǔn)備(所有節(jié)點(diǎn)同步操作)

1、關(guān)閉防火墻

systemctl disable firewalld --now
setenforce 0
sed  -i -r 's/SELINUX=[ep].*/SELINUX=disabled/g' /etc/selinux/config

2、配置域名解析

cat  >> /etc/hosts << EOF
16.32.15.200 master-1
16.32.15.201 node-1
16.32.15.202 node-2
EOF

在指定主機(jī)上面修改主機(jī)名

hostnamectl set-hostname master-1 && bash
hostnamectl set-hostname node-1 && bash
hostnamectl set-hostname node-2 && bash

3、配置服務(wù)器時間保持一致

yum -y install ntpdate
ntpdate ntp1.aliyun.com

添加定時同步 每天凌晨1點(diǎn)自動同步時間

echo "0 1 * * * ntpdate ntp1.aliyun.com" >> /var/spool/cron/root
crontab -l

4、禁用swap交換分區(qū)(kubernetes強(qiáng)制要求禁用)

swapoff --all

禁止開機(jī)自啟動swap交換分區(qū)

sed -i -r '/swap/ s/^/#/' /etc/fstab

5、修改Linux內(nèi)核參數(shù),添加網(wǎng)橋過濾器和地址轉(zhuǎn)發(fā)功能

cat >> /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sysctl -p /etc/sysctl.d/kubernetes.conf

加載網(wǎng)橋過濾器模塊

modprobe br_netfilter
lsmod | grep br_netfilter # 驗證是否生效

6、配置ipvs功能

在kubernetes中Service有兩種代理模型,一種是基于iptables的,一種是基于ipvs,兩者對比ipvs的性能要高,如果想要使用ipvs模型,需要手動載入ipvs模塊

yum -y install ipset ipvsadm

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4  
EOF

chmod +x /etc/sysconfig/modules/ipvs.modules 
# 執(zhí)行腳本
/etc/sysconfig/modules/ipvs.modules

# 驗證ipvs模塊
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

7、安裝Docker容器組件

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

# yum-utils軟件用于提供yum-config-manager程序
yum install -y yum-utils

# 使用yum-config-manager創(chuàng)建docker阿里存儲庫
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 -y

Docker配置加速源:

mkdir /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

# 啟動docker并設(shè)置開機(jī)自啟
systemctl enable docker --now
systemctl status docker

8、重啟服務(wù)器 可略過

reboot

三、安裝并配置cri-dockerd插件

官網(wǎng)下載地址

三臺服務(wù)器同時操作

1、安裝cri-dockerd插件

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm

2、備份并更新cri-docker.service文件

mv /usr/lib/systemd/system/cri-docker.service{,.default}
vim /usr/lib/systemd/system/cri-docker.service 

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target

3、啟動cir-dockerd

systemctl daemon-reload
systemctl start cri-docker.service 
systemctl enable cri-docker.service 

四、安裝kubeadm(所有節(jié)點(diǎn)同步操作)

1、配置國內(nèi)yum源,一鍵安裝 kubeadm、kubelet、kubectl

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

yum install -y kubelet-1.27.0 kubeadm-1.27.0 kubectl-1.27.0

2、kubeadm將使用kubelet服務(wù)以容器方式部署kubernetes的主要服務(wù),所以需要先啟動kubelet服務(wù)

systemctl enable kubelet.service --now

五、初始化集群

在master-1主機(jī)上進(jìn)行操作

1、生成初始化默認(rèn)配置文件

kubeadm config print init-defaults > kubeadm.yaml

我們根據(jù)自己需求進(jìn)行修改默認(rèn)配置文件,我主要更改了一下配置如下:

  • advertiseAddress:更改為master的IP地址
  • criSocket:指定容器運(yùn)行時
  • imageRepository:配置國內(nèi)加速源地址
  • podSubnet:pod網(wǎng)段地址
  • serviceSubnet:services網(wǎng)段地址
  • 末尾添加了指定使用ipvs,開啟systemd
  • nodeRegistration.name:改為當(dāng)前主機(jī)名稱

最終初始化配置文件如下:

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 16.32.15.200
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/cri-dockerd.sock
  imagePullPolicy: IfNotPresent
  name: master-1
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.27.0
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

2、進(jìn)行初始化

kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

初始化成功后輸出如下內(nèi)容:

[init] Using Kubernetes version: v1.27.0
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
W0504 22:24:16.508649    4725 images.go:80] could not find officially supported version of etcd for Kubernetes v1.27.0, falling back to the nearest etcd version (3.5.7-0)
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local master-1] and IPs [10.96.0.1 16.32.15.200]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [localhost master-1] and IPs [16.32.15.200 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [localhost master-1] and IPs [16.32.15.200 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
[control-plane] Creating static Pod manifest for "kube-scheduler"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
W0504 22:24:34.897353    4725 images.go:80] could not find officially supported version of etcd for Kubernetes v1.27.0, falling back to the nearest etcd version (3.5.7-0)
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[apiclient] All control plane components are healthy after 10.002479 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node master-1 as control-plane by adding the labels: [node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers]
[mark-control-plane] Marking the node master-1 as control-plane by adding the taints [node-role.kubernetes.io/control-plane:NoSchedule]
[bootstrap-token] Using token: abcdef.0123456789abcdef
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes
[bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 16.32.15.200:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:afef55c724c1713edb7926d98f8c4063fbae928fc4eb11282589d6485029b9a6 

3、配置kubectl的配置文件config,相當(dāng)于對kubectl進(jìn)行授權(quán),這樣kubectl命令可以使用這個證書對k8s集群進(jìn)行管理

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

驗證使用可以使用 kubectl 命令

kubectl get nodes

六、Node節(jié)點(diǎn)添加到集群

在兩臺node節(jié)點(diǎn)進(jìn)行操

1、使用以下命令創(chuàng)建并查看token

kubeadm token create --print-join-command

2、在兩臺node節(jié)點(diǎn)執(zhí)行,注意添加--cri-socket=指定cri-dockerd.sock。

kubeadm join 16.32.15.200:6443 --token abcdef.0123456789abcdef  --discovery-token-ca-cert-hash sha256:d3d7853ba7691fad218fdfa1027390c7c68e8cf0d3c5033e37170ce00d09901c --cri-socket=unix:///var/run/cri-dockerd.sock

成功加入到集群如下圖:

Kubeadm方式搭建K8s集群【1.27.0版本】

3、給兩臺node節(jié)點(diǎn)打上標(biāo)簽

master-1主機(jī)上執(zhí)行

kubectl label nodes node-1 node-role.kubernetes.io/work=work
kubectl label nodes node-2 node-role.kubernetes.io/work=work

4、查看集群節(jié)點(diǎn)

kubectl get nodes

Kubeadm方式搭建K8s集群【1.27.0版本】

七、安裝網(wǎng)絡(luò)組件Calico

Calico在線文檔地址:

Calico.yaml下載地址:

1、上傳calico.yaml文件到服務(wù)器中,下面提供calico.yaml文件內(nèi)容:

在master主機(jī)執(zhí)行

kubectl apply -f  calico.yaml

2、查看集群狀態(tài) && 查看自帶Pod狀態(tài)

kubectl get nodes

Kubeadm方式搭建K8s集群【1.27.0版本】

3、查看組件狀態(tài) 是否為 Running狀態(tài) 如下圖:

kubectl get pods -n kube-system -o wide

Kubeadm方式搭建K8s集群【1.27.0版本】

八、測試CoreDNS解析可用性

1、下載busybox:1.28鏡像

docker pull busybox:1.28

2、測試coredns文章來源地址http://www.zghlxwxcb.cn/news/detail-443405.html

kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

If you don't see a command prompt, try pressing enter.

/ # nslookup kubernetes.default.svc.cluster.local
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes.default.svc.cluster.local
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
  • 注意:busybox要用指定的1.28版本,不能用最新版本,最新版本,nslookup會解析不到dns和ip

到了這里,關(guān)于Kubeadm方式搭建K8s集群【1.27.0版本】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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ī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • k8s1.27.x 最新版本使用kubeadm 的containerd的方式安裝

    k8s1.27.x 最新版本使用kubeadm 的containerd的方式安裝

    一:k8s1.27.x 的概述 太平洋時間 2023 年 4 月 11 日,Kubernetes 1.27 正式發(fā)布。此版本距離上版本發(fā)布時隔 4 個月,是 2023 年的第一個版本。 新版本中 release 團(tuán)隊跟蹤了 60 個 enhancements,比之前版本都要多得多。其中 13 個功能升級為穩(wěn)定版,29 個已有功能進(jìn)行優(yōu)化升級為 Beta,另有

    2024年02月09日
    瀏覽(23)
  • 國內(nèi)環(huán)境下ubuntu22.04+kubeadm搭建v1.27.2多節(jié)點(diǎn)k8s集群

    按說,使用kubeadm搭建k8s集群最權(quán)威的方法、步驟,應(yīng)該是直接參考kubeadm官網(wǎng),里邊描述了從OS基礎(chǔ)配置到containerd,再到kubeadm安裝、initjoin的全過程。 只是,kubernetes的官網(wǎng)對整個過程的描述并不是一種step by step的方式,而是把相關(guān)的步驟分散于各個富含上下文知識的頁面中,

    2024年02月14日
    瀏覽(29)
  • kubeadm方式搭建的k8s集群升級——2023.05

    kubeadm方式搭建的k8s集群升級——2023.05

    搭建k8s集群的方式有很多種,比如二進(jìn)制,kubeadm,RKE(Rancher)等,k8s集群升級方式也各有千秋,本文主要介紹使用kubeadm方式搭建的k8s集群升級方法。 需要注意的是,升級集群版本建議逐步升級,比如 v1.20.4–v1.21.4–v1.22.4–v1.23.4–v1.24.4,不能跨度過大,否則會報錯。 節(jié)點(diǎn)

    2024年02月12日
    瀏覽(28)
  • Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    本篇主要針對上篇文章的單 master 節(jié)點(diǎn)的 K8s 集群上搭建多 master 節(jié)點(diǎn)集群 和 LB 負(fù)載均衡服務(wù)器。 Kubernetes(K8S)集群搭建基礎(chǔ)入門教程 虛擬機(jī) IP 地址: IP 操作系統(tǒng) 主機(jī)名稱 192.168.2.121 centos7.9 k8s-master01 192.168.2.124 centos7.9 k8s-master02 192.168.2.125 centos7.9 k8s-node01 192.168.2.126 centos

    2023年04月26日
    瀏覽(34)
  • 通過kubeadm部署k8s 1.27高可有集群

    通過kubeadm部署k8s 1.27高可有集群

    本次部署使用外部etcd集群+LB+K8S集群方案。如下圖: 軟件列表及軟件版本:CentOS7U9, Linux kernel 5.4,docker-ce 23.0.6,cri-dockerd v0.3.1,k8s集群為1.27.1 所有主機(jī)均需要操作。 所有主機(jī)均需要操作。 所有主機(jī)均需要操作。 修改完成后需要重啟操作系統(tǒng),如不重啟,可臨時關(guān)閉,命令為s

    2024年02月13日
    瀏覽(28)
  • 【云原生-K8s】kubeadm搭建安裝k8s集群v1.25版本完整教程【docker、網(wǎng)絡(luò)插件calico、中間層cri-docker】

    【云原生-K8s】kubeadm搭建安裝k8s集群v1.25版本完整教程【docker、網(wǎng)絡(luò)插件calico、中間層cri-docker】

    從 k8s 1.24開始,dockershim已經(jīng)從kubelet中移除,但因為歷史問題docker卻不支持kubernetes主推的CRI(容器運(yùn)行時接口)標(biāo)準(zhǔn),所以docker不能再作為k8s的容器運(yùn)行時了,即從k8s v1.24開始不再使用docker了 但是如果想繼續(xù)使用docker的話,可以在kubelet和docker之間加上一個中間層cri-docker。

    2024年02月03日
    瀏覽(59)
  • kubeadm搭建k8s集群

    kubeadm搭建k8s集群

    二進(jìn)制部署 部署難,管理方便,集群伸展性能好 更穩(wěn)定,集群規(guī)模到達(dá)一定的規(guī)模(幾百個節(jié)點(diǎn)、上萬個Pod),二進(jìn)制穩(wěn)定性是要高于kubeadm部署 遇到故障,宿主機(jī)起來了,進(jìn)程也會起來 kubeadm部署 部署簡單,管理難 是以一種容器管理容器的方式允許的組件及服務(wù),故障恢復(fù)時

    2024年02月04日
    瀏覽(27)
  • 使用kubeadm方式快速部署一個K8S集群

    使用kubeadm方式快速部署一個K8S集群

    目錄 一、環(huán)境準(zhǔn)備 二、環(huán)境初始化? 三、在所有主機(jī)上安裝相關(guān)軟件 1、安裝docker 2、配置k8s的yum源 3、安裝kubelet、kubeadm、kubectl 四、部署Kubernetes Master 五、加入Kubernets Node 六、部署CNI網(wǎng)絡(luò)插件 七、測試k8s集群 我的是CentOS7系統(tǒng),然后準(zhǔn)備三臺虛擬主機(jī) 一臺master,和兩臺no

    2024年02月11日
    瀏覽(23)
  • k8s集群加入一個master2--kubeadm方式

    k8s集群加入一個master2--kubeadm方式

    已經(jīng)有一個集群: 192.168.206.138 master 192.168.206.136 k8s-node1 192.168.206.137 k8s-node2 kubectl get nodes -o wide 新加入一個master2節(jié)點(diǎn) 192.168.206.139 master2 ? 如果不加這句,加入集群時一定會報錯: [preflight] Running pre-flight checks ? ? ? ? [WARNING SystemVerification]: missing optional cgroups: pids [preflight]

    2024年01月22日
    瀏覽(24)
  • kubeadm部署k8s 1.26.0版本高可用集群

    kubeadm部署k8s 1.26.0版本高可用集群

    1.前言 本次搭建使用centos7.9系統(tǒng),并且使用haproxy+keepalived作為高可用架構(gòu)軟件,haproxy實現(xiàn)k8s集群管理節(jié)點(diǎn)apiserver服務(wù)的負(fù)載均衡以實現(xiàn)集群的高可用功能,keepalived保障了hapxoy的高可用,容器引擎使用docker,需要額外引入cri-docker服務(wù),且使用集群內(nèi)置的etcd服務(wù),并配置etcd的

    2024年02月11日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包