 云计算白皮书党的二十大报告提出,要构建新一代信息技术等一批新的增长 引擎,打造具有国际竞争力的数字产业集群。云计算是信息技术发 展和服务模式创新的集中体现,是信息化发展的重大变革和必然趋 势,是信息时代国际竞争的制高点和经济发展新动能的助燃剂。云 计算引发了软件开发部署模式的创新,成为承载各类应用的关键基 础设施,并为大数据、物联网、人工智能等新兴领域的发展提供基 础支撑。加快推动云计算创新发展,顺应新一轮科技革命和产业变 .................... 32 (二)功能方面,云计算持续驱动算力服务创新发展.................................. 34 (三)模式方面,云计算重构算力服务供需新模式...................................... 35 五、总结与展望......................................... 云计算白皮书(2023 年) 7 发布第五代虚拟化芯片 Amazon Nitro v5 为云服务提供底层支持,应 用程序可获得与运行在裸金属服务器上相近的性能。三是更注重跨 域融合,创新发展。传统业务模式不断创新,需要先进数字技术持 续交织发展放大赋能效用,以满足多样化用户群体的个性需求。云 计算充分发挥数字基础设施作用,全球厂商正积极基于云底座提供 全新的大数据、区块链、人工智能服务。20220 码力 | 47 页 | 1.22 MB | 1 年前3 云计算白皮书党的二十大报告提出,要构建新一代信息技术等一批新的增长 引擎,打造具有国际竞争力的数字产业集群。云计算是信息技术发 展和服务模式创新的集中体现,是信息化发展的重大变革和必然趋 势,是信息时代国际竞争的制高点和经济发展新动能的助燃剂。云 计算引发了软件开发部署模式的创新,成为承载各类应用的关键基 础设施,并为大数据、物联网、人工智能等新兴领域的发展提供基 础支撑。加快推动云计算创新发展,顺应新一轮科技革命和产业变 .................... 32 (二)功能方面,云计算持续驱动算力服务创新发展.................................. 34 (三)模式方面,云计算重构算力服务供需新模式...................................... 35 五、总结与展望......................................... 云计算白皮书(2023 年) 7 发布第五代虚拟化芯片 Amazon Nitro v5 为云服务提供底层支持,应 用程序可获得与运行在裸金属服务器上相近的性能。三是更注重跨 域融合,创新发展。传统业务模式不断创新,需要先进数字技术持 续交织发展放大赋能效用,以满足多样化用户群体的个性需求。云 计算充分发挥数字基础设施作用,全球厂商正积极基于云底座提供 全新的大数据、区块链、人工智能服务。20220 码力 | 47 页 | 1.22 MB | 1 年前3
 Kubernetes开源书 -  周立doc 中描述了API的总体规范。 API Reference 中描述了API端点、资源类型和样本。 access doc 讨论了API的远程访问。 Kubernetes API也是系统声明式配置模式的基础。 Kubectl 命令⾏⼯具可⽤于创建、更新、删除以及获取API对象。 Kubernetes也会存储其API资源⽅⾯的序列化状态(⽬前存在 etcd 中)。 Kubernetes本身被分解成了多个组件,通过其API进⾏交互。 不仅如此,同⼀个Pod内的所有容器还共享存储卷,这个存储卷也被称为Pod Volume。 在k8s中创建,调度和管理的最⼩单位就是Pod,⽽⾮容器,Pod通过提供更⾼层次的抽象,提供了更加灵活的部署和管 理模式。 Replication Controller(RC) RC是⽤来管理Pod的⼯具,每个RC由⼀个或多个Pod组成。 在RC被创建之后,系统将会保持RC中可⽤的Pod个数与创建RC时定义的Pod个数⼀致。 随着时间的推移,Master组件将被迁 移以使⽤安全端⼝进⾏认证和授权(参⻅ #13598 )。 因此,默认情况下,来⾃集群(Node,以及Node上运⾏的Pod)到Master的连接的默认操作模式将被保护,并且可在 不可信和/公共⽹络上运⾏。 Master -> Cluster 从Master(apiserver)到集群主要有两个通信路径。⼀是从apiserver到集群中的每个Node上运⾏的kubelet进程。⼆是0 码力 | 135 页 | 21.02 MB | 1 年前3 Kubernetes开源书 -  周立doc 中描述了API的总体规范。 API Reference 中描述了API端点、资源类型和样本。 access doc 讨论了API的远程访问。 Kubernetes API也是系统声明式配置模式的基础。 Kubectl 命令⾏⼯具可⽤于创建、更新、删除以及获取API对象。 Kubernetes也会存储其API资源⽅⾯的序列化状态(⽬前存在 etcd 中)。 Kubernetes本身被分解成了多个组件,通过其API进⾏交互。 不仅如此,同⼀个Pod内的所有容器还共享存储卷,这个存储卷也被称为Pod Volume。 在k8s中创建,调度和管理的最⼩单位就是Pod,⽽⾮容器,Pod通过提供更⾼层次的抽象,提供了更加灵活的部署和管 理模式。 Replication Controller(RC) RC是⽤来管理Pod的⼯具,每个RC由⼀个或多个Pod组成。 在RC被创建之后,系统将会保持RC中可⽤的Pod个数与创建RC时定义的Pod个数⼀致。 随着时间的推移,Master组件将被迁 移以使⽤安全端⼝进⾏认证和授权(参⻅ #13598 )。 因此,默认情况下,来⾃集群(Node,以及Node上运⾏的Pod)到Master的连接的默认操作模式将被保护,并且可在 不可信和/公共⽹络上运⾏。 Master -> Cluster 从Master(apiserver)到集群主要有两个通信路径。⼀是从apiserver到集群中的每个Node上运⾏的kubelet进程。⼆是0 码力 | 135 页 | 21.02 MB | 1 年前3
 第29 期| 2023 年9 月- 技术雷达Reserved. 12 技术 1. 设计系统 采纳 随着应用开发变得越来越动态和复杂,交付风格一致且好用的产品成为了一项挑战,尤其是在有多个团队参与 不同产品开发的大型组织中。设计系统定义了一系列的设计模式、组件库以及良好的设计和工程实践,以确保 数字产品的一致性。设计系统从过去的企业风格指南演变而来,提供易于查找和使用的共享组件库和文档。通 常,设计系统的风格指南以代码的形式记录并进行版本控制, 用这种方法来设计和评估预防故障所需的控制措施。该方法源自故障模式与影响分析(FMEA)的实践。FMEA 是一种诞生于上世纪 40 年代的风险评分技术,成功运用于航空航天和汽车等建造复杂物理系统的行业中。与这 些行业一样,软件故障也可能产生严重后果,例如危及人类健康和隐私。这就是为什么我们越来越需要对系统 进行严格分析的原因。该方法首先识别可能的故障模式,然后对根本原因进行分析,并根据故障发生的可能性、 。结构化输入,如 JSON 文档, 清晰而精确,为模型提供了所寻求响应类型的指示。以这种方式限制响应有助于缩小问题空间,并且可以产生 更准确的响应,特别是当结构符合领域特定语言(DSL)的语法或模式情况下。我们还发现,将结构化输入与 自然语言注释或标记结合使用,比仅使用自然语言或结构化输入产生更好的响应。通常,在构建提示时,自然 语言会与结构化内容简单地交织在一起。与许多大语言模型行为一样,我们不知道为什么这样做有效,但我们0 码力 | 43 页 | 2.76 MB | 1 年前3 第29 期| 2023 年9 月- 技术雷达Reserved. 12 技术 1. 设计系统 采纳 随着应用开发变得越来越动态和复杂,交付风格一致且好用的产品成为了一项挑战,尤其是在有多个团队参与 不同产品开发的大型组织中。设计系统定义了一系列的设计模式、组件库以及良好的设计和工程实践,以确保 数字产品的一致性。设计系统从过去的企业风格指南演变而来,提供易于查找和使用的共享组件库和文档。通 常,设计系统的风格指南以代码的形式记录并进行版本控制, 用这种方法来设计和评估预防故障所需的控制措施。该方法源自故障模式与影响分析(FMEA)的实践。FMEA 是一种诞生于上世纪 40 年代的风险评分技术,成功运用于航空航天和汽车等建造复杂物理系统的行业中。与这 些行业一样,软件故障也可能产生严重后果,例如危及人类健康和隐私。这就是为什么我们越来越需要对系统 进行严格分析的原因。该方法首先识别可能的故障模式,然后对根本原因进行分析,并根据故障发生的可能性、 。结构化输入,如 JSON 文档, 清晰而精确,为模型提供了所寻求响应类型的指示。以这种方式限制响应有助于缩小问题空间,并且可以产生 更准确的响应,特别是当结构符合领域特定语言(DSL)的语法或模式情况下。我们还发现,将结构化输入与 自然语言注释或标记结合使用,比仅使用自然语言或结构化输入产生更好的响应。通常,在构建提示时,自然 语言会与结构化内容简单地交织在一起。与许多大语言模型行为一样,我们不知道为什么这样做有效,但我们0 码力 | 43 页 | 2.76 MB | 1 年前3
 k8s操作手册 2.3#可以先下载以上7个镜像,传到每台k8s服务器上,再docker load导入;或者使 用内部registry仓库(内部registry镜像仓库里要有以上7个镜像) ★直接使用命令行方式初始化集群 (以下是非HA模式的master初始化,如果要部署高可用集群,则参考第4章) kubeadm init --kubernetes- version=v1.19.4 \ --apiserver-adver�se- -n k8s.io images import导入;或者使用内部registry仓库(内部registry镜像仓库里要有以上7个镜 像) ★直接使用命令行方式初始化集群 (以下是非HA模式的master初始化,如果要部署高可用集群,则参考第4章) kubeadm init --kubernetes- version=v1.28.2 \ --apiserver-adver�se- 如果有2个coredns的pod未启动就绪,因为pod网络组件还未部署,部署后再查 看;如果部署网络组件之后还未启动,则可能是网络不通,防火墙要放通pod 容器网段入站。 ⑤service使用ipvs模式 # kubectl edit cm kube-proxy -n kube-system #编辑configMap 找到kind: KubeProxyConfigura�on这行往下第2行的mode:0 码力 | 126 页 | 4.33 MB | 1 年前3 k8s操作手册 2.3#可以先下载以上7个镜像,传到每台k8s服务器上,再docker load导入;或者使 用内部registry仓库(内部registry镜像仓库里要有以上7个镜像) ★直接使用命令行方式初始化集群 (以下是非HA模式的master初始化,如果要部署高可用集群,则参考第4章) kubeadm init --kubernetes- version=v1.19.4 \ --apiserver-adver�se- -n k8s.io images import导入;或者使用内部registry仓库(内部registry镜像仓库里要有以上7个镜 像) ★直接使用命令行方式初始化集群 (以下是非HA模式的master初始化,如果要部署高可用集群,则参考第4章) kubeadm init --kubernetes- version=v1.28.2 \ --apiserver-adver�se- 如果有2个coredns的pod未启动就绪,因为pod网络组件还未部署,部署后再查 看;如果部署网络组件之后还未启动,则可能是网络不通,防火墙要放通pod 容器网段入站。 ⑤service使用ipvs模式 # kubectl edit cm kube-proxy -n kube-system #编辑configMap 找到kind: KubeProxyConfigura�on这行往下第2行的mode:0 码力 | 126 页 | 4.33 MB | 1 年前3
 4-2-如何用OpenStack和K8s快速搭建一个容器和虚拟机组合服务的云平台-王昕Nodes Compute Node Compute Node Storage Nodes 多租户隔离的容器和 虚拟机组合网络 kube-proxy的负载均衡原理 对外发布服务——浮动IP模式 对外发布应用服务 利用端口映射节省IP 多用户共享Kubernetes集群 通过二级域名发布服务 覆盖网络(Overlay) Flannel 利用路由协议的SDN 方案——calico 台中 HTTPS的负载均衡 Ø 问题 Ø如何用HAProxy给HTTPS服务做负载均 衡 Ø 解决方案 ØTCP透传模式 Ø不要用HTTP模式,而要用TCP模式做负载均 衡,TCP可以透传TLS连接 Ø后端服务器都要有服务器证书 ØHAProxy认证模式 ØTLS服务器终点为HAProxy,后端连接为明文 TCP Ø要把服务器证书配置到HAProxy上 OpenStack里MySQL OpenStack里MySQL Galera 集群高可用 Ø问题 Ø异步多主多活情况下会出现数据 不一致 Ø同步多活情况下容易出现死锁 Ø解决方案 Ø改成同步一主两备模式 Kubernetes的PVC绑定问题 Ø问题 ØPVC每次申请PV都会占用所有 PV容量 Ø解决方案 Ø对Kubernetes的PV起初理解偏 差,PVC的设计就是占用整个PV Ø要对每个用户PVC单独开辟PV Magnum创建baymodel失败0 码力 | 38 页 | 3.55 MB | 1 年前3 4-2-如何用OpenStack和K8s快速搭建一个容器和虚拟机组合服务的云平台-王昕Nodes Compute Node Compute Node Storage Nodes 多租户隔离的容器和 虚拟机组合网络 kube-proxy的负载均衡原理 对外发布服务——浮动IP模式 对外发布应用服务 利用端口映射节省IP 多用户共享Kubernetes集群 通过二级域名发布服务 覆盖网络(Overlay) Flannel 利用路由协议的SDN 方案——calico 台中 HTTPS的负载均衡 Ø 问题 Ø如何用HAProxy给HTTPS服务做负载均 衡 Ø 解决方案 ØTCP透传模式 Ø不要用HTTP模式,而要用TCP模式做负载均 衡,TCP可以透传TLS连接 Ø后端服务器都要有服务器证书 ØHAProxy认证模式 ØTLS服务器终点为HAProxy,后端连接为明文 TCP Ø要把服务器证书配置到HAProxy上 OpenStack里MySQL OpenStack里MySQL Galera 集群高可用 Ø问题 Ø异步多主多活情况下会出现数据 不一致 Ø同步多活情况下容易出现死锁 Ø解决方案 Ø改成同步一主两备模式 Kubernetes的PVC绑定问题 Ø问题 ØPVC每次申请PV都会占用所有 PV容量 Ø解决方案 Ø对Kubernetes的PV起初理解偏 差,PVC的设计就是占用整个PV Ø要对每个用户PVC单独开辟PV Magnum创建baymodel失败0 码力 | 38 页 | 3.55 MB | 1 年前3
 202106 KubeOperator:开源的轻量级 Kubernetes 发行版
云原⽣生的三个维度 企业本地部署 公有云 + 物理理资源 虚拟化资源 容器器化资源 瀑布模型 敏敏捷开发 DevOps 统⼀一架构 多层级架构 微服务架构 1. 基础设施 2. 开发模式 3. 应⽤用架构 vs. 云原⽣生能⼒力力建设的两个选择 ALL IN ONE 解耦⽅方式 采纳⼀一站式 PaaS 平台,⽐比如 OpenShift 容器器平台、DevOps、微服务:三者分开建设 ⼀一键部署 可视化安装 管理理 备份 伸缩 监控 ⽇日志 Day 0 Day 1 Day 2 规 划 部 署 运 营 升级 在线 / 离线 KubeOperator 的开发团队和运作模式 • 由 Jumpserver 开源明星团队打造; • 遵循 Apache 2.0 开源许可协议 (github.com/kubeoperator); • 通过云原⽣生计算基⾦金金会(CNCF)的 X-Pack 增强包 + 原⼚厂企业级⽀支持服务 KubeOperator 开源容器器平台功能列列表 Day 0 规划 集群模式 1 个 Master 节点 n 个 Worker 节点模式:适合开发测试⽤用途;3 个 Master 节点 n 个 Worker 节点模式:适合⽣生产⽤用途; 计算⽅方案 独⽴立主机:⽀支持⾃自⾏行行准备的虚机、公有云主机和物理理机;vSphere 平台:⽀支持⾃自动创建主机(使⽤用0 码力 | 20 页 | 1.62 MB | 1 年前3 202106 KubeOperator:开源的轻量级 Kubernetes 发行版
云原⽣生的三个维度 企业本地部署 公有云 + 物理理资源 虚拟化资源 容器器化资源 瀑布模型 敏敏捷开发 DevOps 统⼀一架构 多层级架构 微服务架构 1. 基础设施 2. 开发模式 3. 应⽤用架构 vs. 云原⽣生能⼒力力建设的两个选择 ALL IN ONE 解耦⽅方式 采纳⼀一站式 PaaS 平台,⽐比如 OpenShift 容器器平台、DevOps、微服务:三者分开建设 ⼀一键部署 可视化安装 管理理 备份 伸缩 监控 ⽇日志 Day 0 Day 1 Day 2 规 划 部 署 运 营 升级 在线 / 离线 KubeOperator 的开发团队和运作模式 • 由 Jumpserver 开源明星团队打造; • 遵循 Apache 2.0 开源许可协议 (github.com/kubeoperator); • 通过云原⽣生计算基⾦金金会(CNCF)的 X-Pack 增强包 + 原⼚厂企业级⽀支持服务 KubeOperator 开源容器器平台功能列列表 Day 0 规划 集群模式 1 个 Master 节点 n 个 Worker 节点模式:适合开发测试⽤用途;3 个 Master 节点 n 个 Worker 节点模式:适合⽣生产⽤用途; 计算⽅方案 独⽴立主机:⽀支持⾃自⾏行行准备的虚机、公有云主机和物理理机;vSphere 平台:⽀支持⾃自动创建主机(使⽤用0 码力 | 20 页 | 1.62 MB | 1 年前3
 涂小刚-基于k8s的微服务实践经过内部路由进行传输; 5.内部路由到达docker-0网关,流量经由flanneld下发的子 网到达pod容器; 工作原理: Flannel负责在容器集群中的多个节点之间提供第3层IPv4网 络。 工作模式: 1.vxlan 通过封装协议解包收发包mtu1450,vxlan可以在分 布多个网段的主机间构建2层虚拟网络 。 2.host-gw 通过宿主机路由同步收发包,必需工作在二层。 1.系统启动, w>flannel-vxlan>calico-ipip host:指物理机直连网络 calico-bgp:二层bgp模式,自动学习路由 flannel_host-gw:二层直接路由模式 flannel-vxlan:跨三层隧道模式 calico-ipip:跨三层隧道模式 348 279 239 212 208 0 50 100 150 200 250 300 3500 码力 | 19 页 | 1.34 MB | 1 年前3 涂小刚-基于k8s的微服务实践经过内部路由进行传输; 5.内部路由到达docker-0网关,流量经由flanneld下发的子 网到达pod容器; 工作原理: Flannel负责在容器集群中的多个节点之间提供第3层IPv4网 络。 工作模式: 1.vxlan 通过封装协议解包收发包mtu1450,vxlan可以在分 布多个网段的主机间构建2层虚拟网络 。 2.host-gw 通过宿主机路由同步收发包,必需工作在二层。 1.系统启动, w>flannel-vxlan>calico-ipip host:指物理机直连网络 calico-bgp:二层bgp模式,自动学习路由 flannel_host-gw:二层直接路由模式 flannel-vxlan:跨三层隧道模式 calico-ipip:跨三层隧道模式 348 279 239 212 208 0 50 100 150 200 250 300 3500 码力 | 19 页 | 1.34 MB | 1 年前3
 Kubernetes 容器编排与应用编排Pod Master Node Node Node ReplicationController? ReplicaSet PetSet (issue #27430) Kubernetes 控制器模式 Deployment StatefulSet DaemonSet Job CronJob ReplicaSet Pod No Scheduler Kubernetes 控制器 Deployment Deployment Deployment ReplicaSet Pod 1. 支持指定副本数 2. 支持 Recreate 和 Rolling Update 3. 可控的滚动更新模式 4. 支持回滚 5. 可通过 HPA 实现自动弹性伸缩 Kubernetes 控制器 StatefulSet StatefulSet Pod 1. 支持指定副本数 2. Pod 具有固定且唯一的标识符 Kubernetes 控制器 DaemonSet DaemonSet Pod 1. 可以在指定节点一个副本 * NodeSelector * Affinity 2. 可控的滚动更新模式 3. 独立的调度模式 * 不依赖 Scheduler * 无视 unschedulable Kubernetes 控制器 CronJob CronJob Job Pod 1. 定时执行的批处理任务0 码力 | 20 页 | 4.22 MB | 1 年前3 Kubernetes 容器编排与应用编排Pod Master Node Node Node ReplicationController? ReplicaSet PetSet (issue #27430) Kubernetes 控制器模式 Deployment StatefulSet DaemonSet Job CronJob ReplicaSet Pod No Scheduler Kubernetes 控制器 Deployment Deployment Deployment ReplicaSet Pod 1. 支持指定副本数 2. 支持 Recreate 和 Rolling Update 3. 可控的滚动更新模式 4. 支持回滚 5. 可通过 HPA 实现自动弹性伸缩 Kubernetes 控制器 StatefulSet StatefulSet Pod 1. 支持指定副本数 2. Pod 具有固定且唯一的标识符 Kubernetes 控制器 DaemonSet DaemonSet Pod 1. 可以在指定节点一个副本 * NodeSelector * Affinity 2. 可控的滚动更新模式 3. 独立的调度模式 * 不依赖 Scheduler * 无视 unschedulable Kubernetes 控制器 CronJob CronJob Job Pod 1. 定时执行的批处理任务0 码力 | 20 页 | 4.22 MB | 1 年前3
 Kubernetes 异常配置检测框架增加阻断规则 FORWARD_IN_ZONES_SOURCE FORWARD_OUT_ZONES 容器网络不通 异常 VS 异常检测 ? 云原生操作系统 自检 安全模式 检测工具 … 操作系统 NPD 运行模式 • 集群节点(DaemonSet /Standalong) 问题检测 • 硬件(CPU、内存、磁盘) • 操作系统( NTP、内核死锁、文件系统异常) • Container Container Runtime(无响应) 问题上报 • API server • Prometheus node-problem-detector Sonobuoy 运行模式 • 集群节点(Collector Pod + DaemonSet/One Shot) • 需要特定版本来对接兼容的 K8s 版本 问题检测 • Kubernetes Conformance-testing(K8s0 码力 | 31 页 | 9.57 MB | 1 年前3 Kubernetes 异常配置检测框架增加阻断规则 FORWARD_IN_ZONES_SOURCE FORWARD_OUT_ZONES 容器网络不通 异常 VS 异常检测 ? 云原生操作系统 自检 安全模式 检测工具 … 操作系统 NPD 运行模式 • 集群节点(DaemonSet /Standalong) 问题检测 • 硬件(CPU、内存、磁盘) • 操作系统( NTP、内核死锁、文件系统异常) • Container Container Runtime(无响应) 问题上报 • API server • Prometheus node-problem-detector Sonobuoy 运行模式 • 集群节点(Collector Pod + DaemonSet/One Shot) • 需要特定版本来对接兼容的 K8s 版本 问题检测 • Kubernetes Conformance-testing(K8s0 码力 | 31 页 | 9.57 MB | 1 年前3
 石墨文档Go在K8S上微服务的实践-彭友顺架构演进 单体应用时期 垂直应用时期 微服务时期 快速、简单 耦合强 隔离、稳定 复制多 隔离、稳定 复用高 架构演进 组件增多 架构复杂 维护困难 架构演进 传统模式 K8S模式 应用开发 启动方式 日志采集 加载配置 监控采集 资源隔离 故障转移 资源调度 权限控制 标准统一 运维简单 框架简单 编译 部署 应用开发 启动方式 日志采集 • 错误码管理 • 调试gRPC • 调试信息 • 错误定位 问题:每种开源组件的配置、调用方式、debug方式、记录日志方式都不一样 微服务的开发阶段 问题:gRPC未设置连接错误,阻塞模式报错不正确 Redis、MySQL连接数配置未设置?超时未设置? 配置 对接 Debug • 配置驱动 • 配置补齐 • 配置工具 • Proto的管理 • 错误码管理 • 调试gRPC0 码力 | 41 页 | 3.20 MB | 1 年前3 石墨文档Go在K8S上微服务的实践-彭友顺架构演进 单体应用时期 垂直应用时期 微服务时期 快速、简单 耦合强 隔离、稳定 复制多 隔离、稳定 复用高 架构演进 组件增多 架构复杂 维护困难 架构演进 传统模式 K8S模式 应用开发 启动方式 日志采集 加载配置 监控采集 资源隔离 故障转移 资源调度 权限控制 标准统一 运维简单 框架简单 编译 部署 应用开发 启动方式 日志采集 • 错误码管理 • 调试gRPC • 调试信息 • 错误定位 问题:每种开源组件的配置、调用方式、debug方式、记录日志方式都不一样 微服务的开发阶段 问题:gRPC未设置连接错误,阻塞模式报错不正确 Redis、MySQL连接数配置未设置?超时未设置? 配置 对接 Debug • 配置驱动 • 配置补齐 • 配置工具 • Proto的管理 • 错误码管理 • 调试gRPC0 码力 | 41 页 | 3.20 MB | 1 年前3
共 24 条
- 1
- 2
- 3














