参考文档:

https://blog.csdn.net/red_sky_blue/article/details/131107273

https://blog.csdn.net/HappyLearnerL/article/details/129080317

https://zahui.fan/posts/lq0y87n5/

https://blog.csdn.net/engchina/article/details/129776809

https://zhuanlan.zhihu.com/p/668795734

https://blog.csdn.net/weixin_43968988/article/details/124285995

设置主机名

1timedatectl set-timezone Asia/Shanghai

设置时区

1hostnamectl set-hostname master.com

设置静态ip(/etc/NetworkManager/system-connections)

almalinux9.x 放弃了 老的网络配置方式;新的配置文件位于:

/etc/NetworkManager/system-connections(文件名可能各不相同)

注意先备份默认配置文件,然后再进行修改;修改后的内容如下:

 1[connection]
 2id=ens33
 3uuid=c2e8f9fc-85a7-3af4-aaf0-3c3687f73632
 4type=ethernet
 5autoconnect-priority=-999
 6interface-name=enp0s25
 7timestamp=1704078368
 8[ethernet]
 9[ipv4]
10address1=192.168.0.91/24,192.168.0.1
11dns=114.114.114.114;8.8.8.8;
12method=manual
13[ipv6]
14addr-gen-mode=default
15method=auto
16[proxy]

设置hosts:

vim /etc/hosts,添加如下内容:

1192.168.0.91 master.com

关闭防火墙

1systemctl disable firewalld
2systemctl stop firewall

关闭 SELINUX

1setenforce 0
2sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

修改ssh配置

vim /etc/ssh/sshd_config

修改如下内容:

PermitRootLogin yes

PasswordAuthentication yes

永久关闭swap

1vim /etc/fstab

把swap所在的行注释

临时关闭swap

1swapoff -a

系统启动时加载内核模块

1cat <<EOF > /etc/modules-load.d/k8s.conf
2overlay
3br_netfilter
4ip_tables
5iptable_filter
6EOF

将桥接的IPV4流量传递到iptables的链

1cat > /etc/sysctl.d/k8s.conf <<EOF
2net.bridge.bridge-nf-call-ip6tables = 1
3net.bridge.bridge-nf-call-iptables = 1
4net.ipv4.ip_forward = 1
5EOF

应用规则:

1sysctl --system

安装Docker

1yum install -y yum-utils
2yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3yum install -y docker-ce docker-ce-cli

docker配置国内源

mkdir -p /etc/docker

vim /etc/docker/daemon.json

内容如下:

 1{
 2  "exec-opts": ["native.cgroupdriver=systemd"],
 3  "data-root": "/home/zhangcong/dev/docker",
 4  "dns": ["8.8.8.8","114.114.114.114"],
 5  "live-restore":true,
 6  "registry-mirrors":["https://registry.docker-cn.com",
 7"https://hub-mirror.c.163.com",
 8"https://docker.mirrors.ustc.edu.cn"
 9]
10}

设置开机启动

systemctl enable docker

systemctl start docker

安装containerd

1yum install -y containerd.io

从yum源安装的containerd默认禁用了cri,可以使用命令重新生成默认配置:

1containerd config default > /etc/containerd/config.toml

修改Containerd配置文件

vim /etc/containerd/config.toml

  1. 查找 disabled_plugins,发现其值为:[],说明已经没有禁用cri了

  2. 查找 sandbox_image,修改 registry.k8s.io/pause:3.6 为 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6

  3. 查找 plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options 项,在下面修改 SystemdCgroup = true

  4. 查找 [plugins.“io.containerd.grpc.v1.cri”.registry.mirrors],在其下面添加国内镜像源:

1        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
2          endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"]    
  1. 自定义镜像存储的配置路径(可选,如果空间不够可更新该配置)

root = “/var/lib/containerd”

state = “/run/containerd”

其中:

root 是用来保存持久化数据,包括 Snapshots, Content, Metadata 以及各种插件的数据,每一个插件都有自己单独的目录,Containerd 本身不存储任何数据,它的所有功能都来自于已加载的插件。

state 是用来保存运行时的临时数据的,包括 sockets、pid、挂载点、运行时状态以及不需要持久化的插件数据。

总的示例如下:

 1disabled_plugins = []
 2......
 3    sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"
 4......
 5          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
 6......
 7SystemdCgroup = true
 8......
 9      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
10        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
11          endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"]
12......

启动Containerd服务

1systemctl enable containerd
2systemctl restart containerd

安装kubelet,kubeadm,kubectl

添加阿里云的k8s软件源

1cat <<EOF > /etc/yum.repos.d/kubernetes.repo
2[kubernetes]
3name=Kubernetes
4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
5enabled=1
6gpgcheck=1
7repo_gpgcheck=1
8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9EOF

重建缓存:yum makecache

查看可用的kubernetes版本:yum list kubectl –showduplicates | sort -r

安装最新版(如果执行过程中出现: XXXX.rpm 的公钥尚未安装,加上 –nogpgcheck 参数)

1yum install -y kubelet kubeadm kubectl

或者指定版本安装,例如:yum install -y kubelet-1.23.0-0 kubeadm-1.23.0-0 kubectl-1.23.0-0

运行,并设置开机启动

1systemctl enable kubelet && systemctl start kubelet

查看安装版本

1kubectl version
2kubeadm version
3kubelet --version

在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看

1[root@k8s-node1 ~]# kubeadm config images list
2registry.k8s.io/kube-apiserver:v1.28.2
3registry.k8s.io/kube-controller-manager:v1.28.2
4registry.k8s.io/kube-scheduler:v1.28.2
5registry.k8s.io/kube-proxy:v1.28.2
6registry.k8s.io/pause:3.9
7registry.k8s.io/etcd:3.5.9-0
8registry.k8s.io/coredns/coredns:v1.10.1

k8s.gcr.io 被墙,无法连接,下面提供了一种替代方案:

创建 init-k8s-images.sh,内容如下:

 1#!/bin/bash
 2images=(
 3    kube-apiserver:v1.28.2
 4    kube-controller-manager:v1.28.2
 5    kube-scheduler:v1.28.2
 6    kube-proxy:v1.28.2
 7    pause:3.9
 8    etcd:3.5.9-0
 9    coredns:v1.10.1
10)
11for imageName in ${images[@]} ; do
12    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
13    #docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName     k8s.gcr.io/$imageName
14    #docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
15done

k8s 初始化

1kubeadm init \
2--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
3--apiserver-advertise-address=192.168.0.91 \
4--kubernetes-version=v1.28.2 \
5--service-node-port-range=30000-39999 \
6--service-cidr=10.96.0.0/12 \
7--pod-network-cidr=10.244.0.0/16

–apiserver-advertise-address 本机ip,即网卡的地址

–image-repository 国内仓库

–kubernetes-version 指定k8s版本

–service-node-port-range为nodeport分配端口的指定范围(可选;默认30000-32767)

–service-cidr 服务使用IP地址的替代范围

–pod-network-cidr 指定Pod网络的IP地址范围。如果设置,控制平面将自动为每个节点分配CIDR

正常情况返回如下内容:

 1......
 2Your Kubernetes control-plane has initialized successfully!
 3To start using your cluster, you need to run the following as a regular user:
 4mkdir -p $HOME/.kube
 5sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 6sudo chown $(id -u):$(id -g) $HOME/.kube/config
 7Alternatively, if you are the root user, you can run:
 8export KUBECONFIG=/etc/kubernetes/admin.conf
 9You should now deploy a pod network to the cluster.
10Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
11https://kubernetes.io/docs/concepts/cluster-administration/addons/
12Then you can join any number of worker nodes by running the following on each as root:
13kubeadm join 192.168.0.91:6443 --token uoh2m9.lvimwlrvjbh82t8h 
14--discovery-token-ca-cert-hash sha256:ac54e20399b7fa87d7469b761c0a27ea4a64bcb828fe9d69c0e1654efe8a8bb4

如果初始化失败,查看错误:

1journalctl -xeu kubelet

如果提示:Unable to register node “xxxxxxxx” with API server: Unauthorized

说明 /var/lib/kubelet/pki 中的 kubelet-client-current.pem 证书不对,通过下面的命令重新生成 kubelet 证书:

1kubeadm init phase kubeconfig kubelet

可执行下面的步骤后再次重新初始化:

1# 删除进程:
2kill -9 <kubelet 进程>
3
4# 删除配置文件:
5rm -rf /etc/kubernetes/*
6rm -rf /var/lib/etcd
7
8# 重启服务等:
9swapoff -a && kubeadm reset  && systemctl daemon-reload && systemctl restart kubelet  && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

在master节点上安装POD网络插件(CNI):

1kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

查看k8s状态:

1[zhangcong@master k8s]$ kubectl get nodes
2NAME         STATUS   ROLES           AGE   VERSION
3master.com   Ready    control-plane   39m   v1.28.2

Ready 表示正常

查看node的信息

 1[zhangcong@master k8s]$  kubectl describe nodes master.com
 2Name:               master.com
 3Roles:              control-plane
 4Labels:             beta.kubernetes.io/arch=amd64
 5                    beta.kubernetes.io/os=linux
 6                    kubernetes.io/arch=amd64
 7                    kubernetes.io/hostname=master.com
 8                    kubernetes.io/os=linux
 9                    node-role.kubernetes.io/control-plane=
10                    node.kubernetes.io/exclude-from-external-load-balancers=
11Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"6a:60:51:5b:6e:93"}
12                    flannel.alpha.coreos.com/backend-type: vxlan
13                    flannel.alpha.coreos.com/kube-subnet-manager: true
14                    flannel.alpha.coreos.com/public-ip: 192.168.0.91
15                    kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/containerd/containerd.sock
16                    node.alpha.kubernetes.io/ttl: 0
17                    volumes.kubernetes.io/controller-managed-attach-detach: true
18CreationTimestamp:  Fri, 05 Jan 2024 23:01:47 +0800
19Taints:             node-role.kubernetes.io/control-plane:NoSchedule
20Unschedulable:      false
21Lease:
22  HolderIdentity:  master.com
23  AcquireTime:     <unset>
24  RenewTime:       Fri, 05 Jan 2024 23:53:31 +0800
25Conditions:
26  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
27  ----                 ------  -----------------                 ------------------                ------                       -------
28  NetworkUnavailable   False   Fri, 05 Jan 2024 23:38:01 +0800   Fri, 05 Jan 2024 23:38:01 +0800   FlannelIsUp                  Flannel is running on this node
29  MemoryPressure       False   Fri, 05 Jan 2024 23:53:22 +0800   Fri, 05 Jan 2024 23:01:44 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
30  DiskPressure         False   Fri, 05 Jan 2024 23:53:22 +0800   Fri, 05 Jan 2024 23:01:44 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
31  PIDPressure          False   Fri, 05 Jan 2024 23:53:22 +0800   Fri, 05 Jan 2024 23:01:44 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
32  Ready                True    Fri, 05 Jan 2024 23:53:22 +0800   Fri, 05 Jan 2024 23:38:03 +0800   KubeletReady                 kubelet is posting ready status
33Addresses:
34  InternalIP:  192.168.0.91
35  Hostname:    master.com
36Capacity:
37  cpu:                4
38  ephemeral-storage:  71616Mi
39  hugepages-2Mi:      0
40  memory:             15942096Ki
41  pods:               110
42Allocatable:
43  cpu:                4
44  ephemeral-storage:  67585336823
45  hugepages-2Mi:      0
46  memory:             15839696Ki
47  pods:               110
48System Info:
49  Machine ID:                 d148657499e14e37b1f6d56535aabe61
50  System UUID:                f82d5cc0-1c64-2d18-aaa1-203040506099
51  Boot ID:                    c4d76a54-aa59-4922-ad31-dc3f92aa3ace
52  Kernel Version:             5.14.0-362.13.1.el9_3.x86_64
53  OS Image:                   AlmaLinux 9.3 (Shamrock Pampas Cat)
54  Operating System:           linux
55  Architecture:               amd64
56  Container Runtime Version:  containerd://1.6.26
57  Kubelet Version:            v1.28.2
58  Kube-Proxy Version:         v1.28.2
59PodCIDR:                      10.244.0.0/24
60PodCIDRs:                     10.244.0.0/24
61Non-terminated Pods:          (8 in total)
62  Namespace                   Name                                  CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
63  ---------                   ----                                  ------------  ----------  ---------------  -------------  ---
64  kube-flannel                kube-flannel-ds-8cd6j                 100m (2%)     0 (0%)      50Mi (0%)        0 (0%)         17m
65  kube-system                 coredns-6554b8b87f-924js              100m (2%)     0 (0%)      70Mi (0%)        170Mi (1%)     51m
66  kube-system                 coredns-6554b8b87f-nx7w9              100m (2%)     0 (0%)      70Mi (0%)        170Mi (1%)     51m
67  kube-system                 etcd-master.com                       100m (2%)     0 (0%)      100Mi (0%)       0 (0%)         51m
68  kube-system                 kube-apiserver-master.com             250m (6%)     0 (0%)      0 (0%)           0 (0%)         51m
69  kube-system                 kube-controller-manager-master.com    200m (5%)     0 (0%)      0 (0%)           0 (0%)         51m
70  kube-system                 kube-proxy-gp5rz                      0 (0%)        0 (0%)      0 (0%)           0 (0%)         51m
71  kube-system                 kube-scheduler-master.com             100m (2%)     0 (0%)      0 (0%)           0 (0%)         51m
72Allocated resources:
73  (Total limits may be over 100 percent, i.e., overcommitted.)
74  Resource           Requests    Limits
75  --------           --------    ------
76  cpu                950m (23%)  0 (0%)
77  memory             290Mi (1%)  340Mi (2%)
78  ephemeral-storage  0 (0%)      0 (0%)
79  hugepages-2Mi      0 (0%)      0 (0%)
80Events:
81  Type     Reason                   Age                From             Message
82  ----     ------                   ----               ----             -------
83  Normal   Starting                 51m                kube-proxy       
84  Normal   Starting                 51m                kubelet          Starting kubelet.
85  Warning  InvalidDiskCapacity      51m                kubelet          invalid capacity 0 on image filesystem
86  Normal   NodeAllocatableEnforced  51m                kubelet          Updated Node Allocatable limit across pods
87  Normal   NodeHasNoDiskPressure    51m (x7 over 51m)  kubelet          Node master.com status is now: NodeHasNoDiskPressure
88  Normal   NodeHasSufficientPID     51m (x7 over 51m)  kubelet          Node master.com status is now: NodeHasSufficientPID
89  Normal   NodeHasSufficientMemory  51m (x8 over 51m)  kubelet          Node master.com status is now: NodeHasSufficientMemory
90  Normal   Starting                 51m                kubelet          Starting kubelet.
91  Warning  InvalidDiskCapacity      51m                kubelet          invalid capacity 0 on image filesystem
92  Normal   NodeHasSufficientMemory  51m                kubelet          Node master.com status is now: NodeHasSufficientMemory
93  Normal   NodeHasNoDiskPressure    51m                kubelet          Node master.com status is now: NodeHasNoDiskPressure
94  Normal   NodeHasSufficientPID     51m                kubelet          Node master.com status is now: NodeHasSufficientPID
95  Normal   NodeAllocatableEnforced  51m                kubelet          Updated Node Allocatable limit across pods
96  Normal   RegisteredNode           51m                node-controller  Node master.com event: Registered Node master.com in Controller
97  Normal   NodeReady                15m                kubelet          Node master.com status is now: NodeReady
98[zhangcong@master k8s]$ 

解除master节点不能跑pod

默认k8s的master节点是不能跑pod的业务,原理就是为每个主节点设置污点。

查看是否有污点:

1[zhangcong@master ~]$ kubectl describe node master.com | grep Taints
2Taints:             node-role.kubernetes.io/control-plane:NoSchedule

解除某个node不能跑pod的限制:

1[zhangcong@master ~]$ kubectl taint node master.com node-role.kubernetes.io/control-plane:NoSchedule-

将 Master 恢复成 Master Only 状态:

1[zhangcong@master ~]$ kubectl taint node master.com node-role.kubernetes.io/control-plane:NoSchedule

说明:master.com 是节点的名字

安装 Kubernetes Dashboard。

下载:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

为了可以在集群外面访问,我们把recommended.yaml里访问方式调整为nodeport

再执行apply部署 Kubernetes-Dashboard v2.7.0

1kubectl apply -y recommended.yaml

部署完成后,可以在地址栏访问了:https://192.168.0.91:32678

页面上提示需要token,按照如下步骤生成:

 1# 创建账户
 2[zhangcong@master k8s]$ kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
 3
 4
 5# 查看账户信息
 6[zhangcong@master k8s]$ kubectl get serviceaccount dashboard-admin -o yaml -n kubernetes-dashboard
 7
 8
 9
10
11# 绑定角色
12[zhangcong@master k8s]$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin -n kubernetes-dashboard
13
14
15
16# 生成临时token(这个token是临时的,长时间不操作会退出登录)
17[zhangcong@master k8s]$ kubectl create token dashboard-admin -n kubernetes-dashboard
18eyJhbGciOiJSUzI1NiIsImtpZCI6IkZidmppeHJDcHEydk83REM1Z0JZZFpJQ3JJRUsxbFZSaHNzSFl6TElhQ1kifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzA0NzAzMTkyLCJpYXQiOjE3MDQ2OTk1OTIsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJkYXNoYm9hcmQtYWRtaW4iLCJ1aWQiOiI0ODhkZjliMi0xMzE4LTQyODAtODA5OC1lM2M0YTI4MDY2YTEifX0sIm5iZiI6MTcwNDY5OTU5Miwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.sPtX5L-O7jyvKZV0X_eXuX7g2OC9sx4PxOfRM5eKR6Ym0n0NtyR6AED1PcSjispGE1ZQbsllDdDldMx54lSl-rdVt16s7wKRl8Hp-1CY48ztiAQSVkBDQAwAMuEBLAxekKx5VYZmr3RVA-Edwh3PJ7oRO-Eu2i6fprasIRWqMapp0RFQwgNEeeVZj4hzihoB8Y8FHHL-hVafwsNyHZ2MDPhad2WQ4QiqNGXmzzYe2js0qraBh8d5ktaRoRtBammO0p_u70j4M-ZLYDZ93IpRDksofsHs7B4LwTB0KuII11B5WfwLuQtSp82i2LuLJXUHuLopoL-Iyo0hIaZ_zoMJQw
19
20
21# 生成永久token
22[zhangcong@master ~]$ vim dashboard-admin-secret.yaml
23apiVersion: v1
24kind: Secret
25metadata:
26  name: dashboard-admin-secret
27  namespace: kubernetes-dashboard
28  annotations:
29    kubernetes.io/service-account.name: dashboard-admin
30type: kubernetes.io/service-account-token
31
32
33
34[zhangcong@master ~]$ kubectl apply -f dashboard-admin-secret.yaml
35secret/dashboard-admin-secret created
36
37# 查看生成永久token
38[zhangcong@master ~]$ kubectl get secret -n kubernetes-dashboard
39NAME                              TYPE                                  DATA   AGE
40dashboard-admin-secret            kubernetes.io/service-account-token   3      6s
41kubernetes-dashboard-certs        Opaque                                0      101d
42kubernetes-dashboard-csrf         Opaque                                1      101d
43kubernetes-dashboard-key-holder   Opaque                                2      101d
44
45[zhangcong@master ~]$ kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard
46Name:         dashboard-admin-secret
47Namespace:    kubernetes-dashboard
48Labels:       <none>
49Annotations:  kubernetes.io/service-account.name: dashboard-admin
50              kubernetes.io/service-account.uid: 488df9b2-1318-4280-8098-e3c4a28066a1
51
52Type:  kubernetes.io/service-account-token
53
54Data
55====
56ca.crt:     1107 bytes
57namespace:  20 bytes
58token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IkZidmppeHJDcHEydk83REM1Z0JZZFpJQ3JJRUsxbFZSaHNzSFl6TElhQ1kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tc2VjcmV0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjQ4OGRmOWIyLTEzMTgtNDI4MC04MDk4LWUzYzRhMjgwNjZhMSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDpkYXNoYm9hcmQtYWRtaW4ifQ.kTnl9Z14Tm_z-ERRbs6ht9Ifo58-1Sf8TgIUfY3HGBW-Z2jjFmdCQZma-j2_gG-vy_Fpil73Nakf3hjbm2Hb7hTwbHOk-qSi0_t_qvJZYX1klXWagxN6wmZCjRWQh9Ef1-2KHBnSHFOZdiZskG28R15vX3xcedmOkc2SNwS9s8UeVkqgKmlA5jk6ofnV_Rtrc22-db4v0ITTVzzPH5akuTMbWo2HsH-8Zu7g-pBHNWZcwx5HfQzeHaFn7gjtktTxe2oV2so__P8emYs-nPq0oNJDWd61WZQ6Ogf20QK95NU1qlTXmV_pU8px0wzils8hJhALp4D_dn0byfpBbkW-4w

把生成的token复制到页面上即可进入