21 kubesphere安装部署

2023-05-16

文章目录

      • 一、kubersphere
        • 1、KuberSphere简介
        • 2、 全栈的 Kubernetes 容器云 PaaS 解决方案
        • 3、为什么选择 KubeSphere ?
        • 4、 主要功能
      • 二、kubespshe 安装(KubeKey安装)
        • 1、环境配置
        • 2、配置软件依赖
        • 3、安装KubeSphere和kubernetes
        • 4、安装完成核验
        • 5、登陆系统
      • 三、Kubernetes可视化界面kubesphere
        • 1、kubesphere简介
        • 2、kubesphere安装
        • 3、安装helm
        • 4、部署KubeSphere
          • 1、开始安装
          • 2、检查安装日志
          • 3、查看pod运行状况
          • 4、访问kubesphere
        • 5、故障排查汇总

一、kubersphere

1、KuberSphere简介

1、linux 安装

2、kubernetes安装

官方文档

  • Linux 上的 All-in-one 安装
  • 创建企业空间、项目、帐户和角色
  • [KubeSphere v2.0 使用手册](KubeSphere v2.0 使用手册)

原文链接:KubeSphere v2.0 使用手册

KubeSphere 容器平台面向云原生应用的容器混合云

KubeSphere 愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。

# 1、KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台(KubeSphere 多租户容器平台),提供简单易用的操作界面以及向导式操作方式。
# 2、解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。KubeSphere提供企业级容器应用管理服务,支持更强大的功能和灵活的配置,满足企业复杂的业务需求(比如支持 Master 和 etcd 节点高可用、可视化 CI/CD 流水线、灰度发布等更为复杂的业务场景)。

2、 全栈的 Kubernetes 容器云 PaaS 解决方案

KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。

3、为什么选择 KubeSphere ?

KubeSphere 为企业用户提供高性能可伸缩的容器应用管理服务,旨在帮助企业完成新一代互联网技术驱动下的数字化转型,加速业务的快速迭代与交付,以满足企业日新月异的业务需求。

1、完全开源: 通过 CNCF 一致性认证的 Kubernetes 平台,100% 开源,由社区驱动与开发

2、简易安装: 支持部署在任何基础设施环境,提供在线与离线安装,支持一键升级与扩容集群

3、功能丰富: 在一个平台统一纳管 DevOps、云原生可观测性、服务网格、应用生命周期、多租户、多集群、存储与网络

4、模块化 & 可插拔: 平台中的所有功能都是可插拔与松耦合,您可以根据业务场景可选安装所需功能组件

  • 不同团队的受益

    实现从云端到数据中心自动化部署、扩容与升级集群

- 1、提高资源利用率,减少内部基础设施的成本支出
- 2、提供安全增强,支持多种存储与网络方案
- 3、为企业交付一个通过 CNCF 认证和可信赖的 Kubernetes 发行版
- 4、支持 Kubernetes 的多云与多集群管理,提供多云与多可用区的高可用
  • 开发者

    从繁琐的 YAML 编辑工作中解放,让开发者只需专注于业务开发

- 1、为开发者提供向导式的用户体验,降低上手云原生技术栈的学习曲线
- 2、内置常用的自动化部署环境,为应用(Java/NodeJs/Python/Go)部署提供定制化的容器运行环境
- 3、提供开箱即用的工具集,帮助开发者将代码快速构建为可运行的容器镜像,提高开发效率
- 4、提供应用商店和应用生命周期管理,缩短应用上线周期
  • 运维团队

    构建一站式企业级的 DevOps 架构与可视化运维能力

    - 1、提供从平台到应用维度的日志、监控、事件、审计、告警与通知,实现集中式与多租户隔离的可观测性
    - 2、简化应用的持续集成、测试、审核、发布、升级与弹性扩缩容
    - 3、为云原生应用提供基于微服务的灰度发布、流量管理、网络拓扑与追踪
    - 4、提供易用的界面命令终端与图形化操作面板,满足不同使用习惯的运维人员
    
  • 用户

    在 Kubernetes 上使用与运维应用变得极其简单

    - 1、通过应用商店一键部署与升级应用至 Kubernetes
    - 2、提供按需容器资源申请,支持设置容器的弹性伸缩(HPA),提升应用的可靠性与灵活性
    - 3、支持导入 Helm 应用仓库可视化编辑与部署应用
    - 4、应用商店将支持运营,提供针对应用的计量与计费(v3.x)
    

4、 主要功能

https://kubesphere.io/zh/

# 1、安装 Kubernetes 集群
支持在任何基础设施上部署 Kubernetes,提供在线与离线安装,支持添加 GPU 节点

# 2、Kubernetes 资源管理 
提供 Web 控制台对接 Kubernetes 原生 API 快速创建与管理 Kubernetes 资源,内置多维度的可观测性
 
# 3、多租户管理
提供统一的认证鉴权与细粒度的基于角色的授权系统,支持对接 AD/LDAP

# 4、支持多种存储与网络方案
支持 GlusterFS、Ceph、NFS、LocalPV,提供多个 CSI 插件对接公有云与企业级存储;提供面向物理机 Kubernetes 环境的负载均衡器 OpenELB,支持网络策略可视化,支持 Calico、Flannel、Cilium、Kube-OVN 等网络插件

二、kubespshe 安装(KubeKey安装)

1、环境配置

官方支持的操作系统及最低配置

操作系统最低配置
Ubuntu 16.04, 18.042 核 CPU,4 GB 内存,40 GB 磁盘空间
Debian Buster, Stretch2 核 CPU,4 GB 内存,40 GB 磁盘空间
CentOS 7.x2 核 CPU,4 GB 内存,40 GB 磁盘空间
Red Hat Enterprise Linux 72 核 CPU,4 GB 内存,40 GB 磁盘空间
SUSE Linux Enterprise Server 15/openSUSE Leap 15.22 核 CPU,4 GB 内存,40 GB 磁盘空间

安装前最好保证环境是纯净环境,我这里是云服务器,重装了CentOS7.6系统

支持容器

使用KubeKey进行安装会默认安装最新容器,也可以在使用KubeKey进行安装前安装好指定容器
支持的容器版本
Docker19.3.8 +
containerd最新版
CRI-O(试验版,未经充分测试)最新版
iSula(试验版,未经充分测试)最新版

Kubernetes依赖

KubeKey可以指定安装Kubernetes 和 KubeSphere ,但是不同版本的Kubernetes有不同的依赖要求
依赖项Kubernetes 版本 ≥ 1.18Kubernetes 版本 < 1.18
socat必须可选但建议
conntrack必须可选但建议
ebtables可选但建议可选但建议
ipset可选但建议可选但建议

2、配置软件依赖

# 1、第一步: 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
# 2、第二步:关闭swap分区
swapoff -a
echo "vm.swappiness=0" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
# 3、第三步:配置epel源
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
# 4、第四步:更新yum
yum -y update
# 5、第五步:安装依赖组件
也就是上面的Kubernetes依赖里的内容,全部安装
yum install -y ebtables socat ipset conntrack

3、安装KubeSphere和kubernetes

使用KubeKey可以选择安装KubeSphere和kubernetes的其中一个,也可以全部安装

# 1、下载KubeKey
如果网络不好的小伙伴无法下载默认源,执行以下命令设置国内下载
export KKZONE=cn
# 2、下载KubeKey:
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.1 sh -
# 3、给KubeKey添加可执行权限
chmod +x kk
# 4、安装KubeSphere和kubernetes
在安装前请先检查hostname,如果不符合规则会报以下错误
error: Pipeline[CreateClusterPipeline] execute failed: Module[InitKubernetesModule] exec failed: 
failed: [VM-20-8-centos] [AddWorkerLabel] exec failed after 5 retires: add worker label failed: Failed to exec command: sudo -E /bin/bash -c "/usr/local/bin/kubectl label --overwrite node VM-20-8-centos node-role.kubernetes.io/worker=" 
Error from server (NotFound): nodes "VM-20-8-centos" not found: Process exited with status 1
这时候就需要修改hostname,因为我们是单机安装就设置为master吧,执行以下命令
hostnamectl --static set-hostname master
设置完成后使用`hostnamectl status`命令进行核验
[root@master01 kubesphere]# hostnamectl status
   Static hostname: master01
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 241ae9d4dc04406abf2a9709f70b2a7f
           Boot ID: 39d25b17fdeb4e3b85a069f452539a9c
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 5.4.236-1.el7.elrepo.x86_64
      Architecture: x86-64

# 5、安装KubeSphere和kubernetes:
./kk create cluster --with-kubernetes v1.22.10 --with-kubesphere v3.3.0

如果只需要安装KubeSphere或者kubernetes其中一个去掉–with的另一个就可以

img

4、安装完成核验

安装完成后执行以下命令查看安装结果

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f 

输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880。现在可以使用默认的帐户和密码 (admin/P@88w0rd) 通过 :30880 访问控制台。

5、登陆系统

在浏览器上访问ip+30880的地址出现以下页面

img

使用默认的帐户和密码 (admin/P@88w0rd)进行登陆,登陆后就可以探索KubeSphere了

img


但是真正使用k8s集群单机是不可以的,下篇文章是多节点集群的配置 

在这里插入图片描述

三、Kubernetes可视化界面kubesphere

【kubesphere官网】:集群要求高
【kubesphere安装教程】 :开源kuboard也不错,集群要求不高【轻量级】

1、kubesphere简介

KubeSphere是一款面向云原生设计的开源项目,在目前主流容器调度平台Kubernetes之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度

2、kubesphere安装

kubesphere文档 : https://kubesphere.io/zh/

环境准备

# 1、Kubernetes 版本必须为 “1.15.x,1.16.x,1.17.x 或 1.18.x”;

# 2、确保您的计算机满足最低硬件要求:CPU > 1 核,内存 > 2 G;

# 3、在安装之前,需要配置 Kubernetes 集群中的默认存储类;

# 4、当使用 `--cluster-signing-cert-file` 和 `--cluster-signing-key-file` 参数启动时,在 kube-apiserver 中会激活 CSR 签名功能

# 5、有关在 Kubernetes 上安装 KubeSphere 的前提条件的详细信息,请参阅[kubesphere文档]

3、安装helm

下面我们需要在 master 节点安装 helm

Helm是Kubernetes的包管理器。包管理器类似于我们在 **Ubuntu** 中使用的 **apt**。**Centos** 中使用的 **yum** 或者**Python** 中的 **pip** 一样,能快速查找、下载和安装软件包。Helm由客户端组件helm和服务端组件Tiller组成,能够将一组K8S资源打包统一管理,是查找、共享和使用为Kubernetes构建的软件的最佳方式。
# 1、下载
[root@k8s-m-01 ~]# wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz

# 2、解压并分发其他给机器 (如果没有做高可用则不需要分发)
[root@k8s-m-01 ~]# tar -xf helm-v3.3.4-linux-amd64.tar.gz 
[root@k8s-m-01 ~]# cd linux-amd64/
[root@k8s-m-01 ~]# for i in m1 m2 m3;do scp helm root@$i:/usr/local/bin/; done 
[root@k8s-m-01 ~]# mv linux-amd64/helm /usr/local/bin/ (如果不指定到/usr/local/bin/下会报错)
# 3、测试安装
[root@k8s-m-01 ~]# helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"clean", GoVersion:"go1.16.5"}
# 4、测试安装
[root@k8s-m-01 .config]# helm # 有内容输出即成功
| Operating System | Cache Path                | Configuration Path             | Data Path               |
|------------------|---------------------------|--------------------------------|-------------------------|
| Linux            | $HOME/.cache/helm         | $HOME/.config/helm             | $HOME/.local/share/helm |
| macOS            | $HOME/Library/Caches/helm | $HOME/Library/Preferences/helm | $HOME/Library/helm      |
| Windows          | %TEMP%\helm               | %APPDATA%\helm                 | %APPDATA%\helm          |
# 5、创建目录
[root@k8s-m-01 ~]# mkdir -p $HOME/.cache/helm
[root@k8s-m-01 ~]# mkdir -p  $HOME/.config/helm
[root@k8s-m-01 ~]# mkdir -p $HOME/.local/share/helm

4、部署KubeSphere

k8s集群的默认存储类部署

安装前

如果您的服务器无法访问 GitHub,则可以分别复制 kubesphere-installer.yaml 和 cluster-configuration.yaml 中的内容并将其粘贴到本地文件中。然后,您可以对本地文件使用 kubectl apply -f 来安装 KubeSphere。

同时查看k8s集群的默认存储类

[root@master01 ~]# kubectl get storageclass

如果没有默认存储类,那么就需要安装默认的存储类

因为我安装的是 nfs,所以在安装了 nfs 服务器启动

[root@master01 ~]# systemctl start nfs
1、开始安装

官网:https://github.com/kubesphere/ks-installer

如果您的服务器无法访问 GitHub,则可以分别复制 kubesphere-installer.yaml 和 cluster-configuration.yaml 中的内容并将其粘贴到本地文件中。然后,您可以对本地文件使用 kubectl apply -f 来安装 KubeSphere。
[root@master01 ~]# kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.0/kubesphere-installer.yaml
[root@master01 ~]# kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.0/cluster-configuration.yaml
2、检查安装日志
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-installer -o jsonpath='{.items[0].metadata.name}') -f
3、查看pod运行状况
[root@master01 ~]# kubectl get po -n kubesphere-system 
ks-console-5c5676fb55-5ffgb              1/1     Running            0               41m
ks-console-5c5676fb55-96fwx              1/1     Running            0               41m
ks-console-5c5676fb55-nkpvn              1/1     Running            0               41m
[root@master01 ~]# kubectl get svc/ks-console -n kubesphere-system
NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
ks-console   NodePort   10.98.135.216   <none>        80:30880/TCP   42m
4、访问kubesphere

ip:30880

5、故障排查汇总

# 一、kubesphere报这个错误
TASK [preinstall : KubeSphere | Stopping if StorageClass was not found] ********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
`解决`
# 1、修改sc为默认标识
 kubectl patch sc local -p '{"metadata": {"annotations": {"storageclass.beta.kubernetes.io/is-default-class": "true"}}}'
其中local为我的sc名称
或者在创建class时添加注解:
  metadata:
    annotations:
      storageclass.beta.kubernetes.io/is-default-class: "true"
# 二、无kubesphere svc服务
[root@master01 ~]# kubectl get svc/ks-console -n kubesphere-system
Error from server (NotFound): services "ks-console" not foun
`解决`
安装Kubernetes配置默认存储类
# 三、Error response from daemon: Get "https://quay.io/v2/": dial tcp: lookup quay
`解决`
[root@master01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8  # 也配置dns可以只有8.8.8.8
# 四、当安装完成后遇到默认账户无法登录,看到account is not active相关错误提示时,需要检查ks-controller-manager的运行状态和日志。
`常见问题及解决方式如下`
[root@master01 ~]# kubectl -n kubesphere-system get ValidatingWebhookConfiguration users.iam.kubesphere.io -o yaml >> users.iam.kubesphere.io.yaml
[root@master01 ~]# kubectl -n kubesphere-system get secret ks-controller-manager-webhook-cert -o yaml >> ks-controller-manager-webhook-cert.yaml
# edit ca as pr
[root@master01 ~]# kubectl -n kubesphere-system apply -f ks-controller-manager-webhook-cert.yaml
[root@master01 ~]# kubectl -n kubesphere-system apply -f users.iam.kubesphere.io.yaml
# restart
[root@master01 ~]# kubectl -n kubesphere-system rollout restart deploy ks-controller-manager
# 五、request to http://ks-apiserver/oauth/token failed, reason: connect ECONNREFUSED 10.101.39.218:80
`解决`
[root@master01 kubesphere]# kubectl get po -n kubesphere-system
NAME                                     READY   STATUS             RESTARTS         AGE
ks-apiserver-6c6b5b9486-ptbg4            0/1     CrashLoopBackOff   10 (4m31s ago)   36m
ks-apiserver-6c6b5b9486-rnxkg            0/1     CrashLoopBackOff   10 (3m43s ago)   35m
ks-apiserver-6c6b5b9486-rt4px            0/1     CrashLoopBackOff   10 (3m59s ago)   36

# 把ks-apiserver的pod恢复就可以了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

21 kubesphere安装部署 的相关文章

  • centos7.3环境编译安装pktgen-dpdk,dpdk工具

    概述编译环境编译DPDK编译Pktgen dpdkDebug 概述 DPDK xff08 Date Plane Development Kit xff09 主要基于Linux系统运行 xff0c 用于快速数据包处理的函数库与驱动集合 xff
  • 捷联惯导算法心得

    1 四个概念 xff1a 地理 坐标系 机体 坐标系 他们之间换算公式 换算公式用的系数 地理坐标系 xff1a 东 北 天 xff0c 以下简称 地理 在这个坐标系里有重力永远是 xff08 0 0 1g xff09 xff0c 地磁永远
  • Java中的域,静态域,实例域

    域 所谓的域 xff0c 是field的翻译 xff0c 也就是我们常说的字段 xff0c 或者属性 比如类的字段 xff08 属性 xff09 xff0c 局部的 xff0c 全局的 静态域 也就是静态属性 xff0c 我们可以单独为它设
  • 【线程篇】线程间同步之信号量、互斥锁

    线程 xff1a 进程内部的一条执行路径 xff08 序列 xff09 什么是线程什么是进程 xff0c 进程和线程的区别 xff1f 进程是一个正在运行的程序 xff0c 是系统进程资源分配的基本单位 线程是进程内部的一条执行路径 xff
  • PL/SQL报错:无法解析指定的连接标识符

    在安装oracle的时候PL SQL报错 xff1a ORA 12154 TNS 无法解析指定的连接标识符 xff0c 在网上找了很多资料 xff0c 然后问题解决 其中下面的文章分析的过程很值得学习 xff0c 特地转载过来时刻告诫自己全
  • 【idm】idm突破cookie封锁 (解决http:1.1 403 forbidden)(附charles使用教程)

    文章目录 一 问题二 解决方法 xff08 1 xff09 在chrome中获得cookies xff08 2 xff09 安装配置charles 三 另外的方法参考 idm的使用教程参考 xff1a 一 问题 使用idm下载文件出现如下问
  • 四旋翼飞行器数学建模+轨迹跟踪控制

    数学模型 xff08 状态空间方程 xff09 xff1a 控制算法 有限时间 xff08 finite time control xff09 控制 xff0c 文献 1 xff1b 比例 微分 xff08 PD xff09 控制 xff0
  • 卡尔曼滤波算法总结

    自己学习整理卡尔曼滤波算法 xff0c 从放弃到精通 kaerman 滤波算法 卡尔曼滤波是非常经典的预测追踪算法 xff0c 是结合线性系统动态方程的维纳滤波 xff0c 其实质是线性最小均方差估计器 xff0c 能够在系统存在噪声和干扰
  • 做嵌入式驱动的前途何在

    做嵌入式驱动的前途何在 做嵌入式linux驱动的前途何在 xff1f 或者说 xff0c 怎么才能做好这一行 xff1f 我做嵌入式驱动开发已经一年多了 xff0c 感觉没学到多少东西 从网络驱动到CAN驱动 从dataflash驱动到NA
  • 串口通信的调试01

    在开发中 xff0c 我们经常遇到这种情况 xff0c 供应商给了一台仪器 xff0c 然后仪器配套有软件 我们通过点击按钮往仪器发送命令 xff0c 仪器返回数据 有些时候 xff0c 我们希望可以通过自己编写的软件来操作仪器 xff0c
  • Linux驱动程序开发之三----按键驱动(Tiny6410)

    在Linux驱动程序开发之三 按键驱动 xff08 Tiny6410 xff09 博文中讨论了使用中断来实现按键驱动 xff0c 毫无疑问 xff0c 中断方式效率相当高 xff0c 但是在此之前 xff0c CPU要想获知按键的状态都是通
  • 飞控信号SBUS信号解析为PWM信号输出

    飞控信号SBUS信号解析为PWM信号输出 1 修改STM32时钟频率 xff1a static void SetSysClockTo72 void IO uint32 t StartUpCounter 61 0 HSEStatus 61 0
  • GTSAM 的使用

    GTSAM 的使用 GTSAM 是一个在机器人领域和计算机视觉领域用于平滑 xff08 smoothing xff09 和建图 xff08 mapping xff09 的C 43 43 库 它与 g 2 o 不同的是 xff0c g 2 o
  • ROS智能车实现darknet_ros检测物体

    文章目录 一 搭建智能车环境1 下载包以及编译1 1 下载源码包1 2 编译1 3 错误解决 xff08 1 xff09 controllers相关 xff08 2 xff09 driver base相关 xff08 3 xff09 ack
  • 使用Vant完成DatetimePicker 日期的选择器

    效果展示 xff1a 代码展示 xff1a lt template gt lt div id 61 34 date time picker 34 gt lt van button plain type 61 34 primary 34 64
  • 拜访谭浩强老先生

    本月 22日 邀请各大高校计算机专业的院长 教授 xff08 谭浩强 王移芝 陈明 杨小平 王立柱 郑莉 等等 xff09 前来我校参观指导 xff0c 尤其是对我们的 信息技术提高班 进行深入的了解 得知前几天中国计算机界泰斗级人物谭浩强
  • 使用Vant完成各种Toast提示框

    效果展示 xff1a xff08 1 xff09 使用前的需要安装Vant奥 参考博客 xff08 2 xff09 在main js里面引入Toast import Toast from 39 vant 39 Vue use Toast x
  • 使用Vant完成底部弹出框 ActionSheet 上拉菜单

    效果图 xff1a 代码展示 xff1a xff08 ActionSheet 上拉菜单 xff09 lt template gt lt ActionSheet 上拉菜单 gt lt div id 61 34 action sheet 34
  • vue项目总结,项目期间遇到的问题、难点等。【暂停更新】

    近期一直在做一个xxx中心的项目 xff0c 先来吐槽下内心的想法 xff0c 要开发的项目需求很不明确 xff0c 需求两周两周的更改 xff0c 感觉每天并没有特别多实际的产出 xff0c 总是感觉有点儿浪费时间 虽然这样 xff0c
  • http请求 状态码204

    今天在调试接口的时候遇到个问题 xff1a 一个请求走了两次 xff0c 一次204 xff0c 一次200 且 xff0c 请求204的 Request Method 是 OPTIONS 在网上查看资料后得知 xff0c 是因为跨域而引起

随机推荐