Kubernetes容器编排简介

1.1 Kubernetes的诞生到应用

  • Kubernetes的诞生源于对高效管理和部署大规模容器化应用的需求,它由Google基于其内部使用的Borg系统的核心理念而设计,并在2014年开源,迅速吸引了全球开发者和企业的关注。凭借其开放性和灵活性,Kubernetes快速聚集了一个活跃的社区,并得到了包括Red Hat、IBM、Microsoft等在内的众多企业的支持。2015年,Kubernetes加入云原生计算基金会(CNCF),进一步加速了其发展。

  • 随着技术的成熟,Kubernetes开始被广泛应用于企业级生产环境,以其自动化部署、无缝扩展和自我修复的特性,极大地提升了运维效率和系统稳定性。云服务提供商的支持也使得Kubernetes的部署和管理变得更加便捷。如今,Kubernetes不仅是容器编排领域的一个标杆,更成为了云原生技术栈的核心,持续推动着云计算和微服务架构的发展。

1.2 Kubernetes主要特点

  • 自动化部署和扩展:Kubernetes可以自动部署容器并根据需求进行扩展。

  • 自我修复能力:能够自动替换失败的容器,确保服务的持续运行。

  • 服务发现和负载均衡:提供内置的服务发现和负载均衡功能。

  • 滚动更新:支持无停机的滚动更新,以及必要时的回滚操作。

  • 跨主机网络:为容器提供跨主机的网络连接。

  • 安全性:提供包括访问控制和安全策略在内的多种安全特性。

  • 生态系统:拥有一个庞大且活跃的生态系统,支持广泛的工具和服务。

  • 可扩展性:设计上支持大规模集群,能够管理成千上万的节点。

image-20240502200336742

1.3 Kubernetes的应用

1.3.1 为什么Kubernetes被广泛应用

Kubernetes(通常称为K8s)之所以受到广泛欢迎,是因为它提供了一系列的优势,特别是在支持微服务架构、系统迁移、扩容能力以及管理工具方面。

  • 多容器支持:K8s不仅支持Docker,还能运行其他容器技术如Rocket。

  • 微服务架构:K8s非常适合微服务架构,简化了服务的部署和管理。

  • 灵活迁移:系统可以轻松地整体迁移,无论是跨云还是到本地环境。

  • 横向扩容:K8s具备强大的横向扩容能力,可以根据需求动态调整资源。

  • 管理工具:提供了一系列工具,覆盖开发、部署、测试和运维监控的全流程。

1.3.2 具体事件举例

  • Twitter宣布全面采用Kubernetes来管理其容器化基础设施,这一决策反映了Kubernetes在容器编排领域的领先地位和广泛认可。

image-20240502200941285

  • 阿里云在2019年年底停止对Docker Swarm的支持

image-20240502201033497

1.4 kubernetes概念

  • Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控

  • Node:Kubernetes中的工作负载节点,负责运行容器。Master节点负责调度并将容器分配到这些Node上。

  • Pod:Kubernetes的最小控制单元,容器化应用程序运行在Pod中。一个Pod可以包含一个或多个紧密相关的容器。

  • Controller:用于管理Pod的生命周期,包括创建、扩展、缩减和删除Pod。常见的控制器有Deployment、ReplicaSet等。

  • Service:为一组执行相同功能的Pod提供统一的访问接口,无论Pod如何变化,Service都保持稳定。

  • Scaling(伸缩):自动调整容器数量。

  • Label:用于在资源上添加标识符,允许通过Selector选择和操作具有相同标签的资源。

  • Namespace:用于隔离集群资源,Pod、Service等可以被分配到不同的Namespace中,实现环境隔离。

  • Volume:用于持久化存储数据。

  • Ingress:管理外部网络访问集群服务的规则。

  • Deployment:负责Pods的部署和更新。

1.5 Kubernetes组件

1.5.1 Master节点

Master节点负责整个Kubernetes集群的管理和控制。它的核心组件包括:

  • API Server:作为系统的大脑,提供Kubernetes API的接口,处理所有的RESTful请求和集群内的数据变化。

  • Scheduler:负责监视新创建的Pods,决定将它们放置在哪个Node上,以达到最优的资源利用和负载均衡。

  • Controller Manager:运行各种控制器进程,例如负责Deployment的控制器会确保指定数量的Pod副本始终运行。

  • etcd:作为集群的数据库,存储了整个Kubernetes集群的状态信息,包括Pods、Service、ConfigMaps等所有资源的信息。

1.5.2 Node节点

Node节点是Kubernetes集群中的工作节点,负责运行应用程序容器。每个Node节点上运行的组件包括:

  • Kubelet:直接与Master节点通信,负责启动Pods中的容器、监控容器运行状态,并上报状态信息回Master。

  • Container Runtime:负责实际运行容器,如Docker、containerd等,Kubernetes通过容器运行时接口(CRI)与这些运行时进行交互。

  • Kube-proxy:负责Pods的网络代理,实现服务发现和负载均衡,确保Pods可以互相通信,以及外部请求能够分发到正确的Pod。

  • Docker或类似的工具:作为容器运行时,负责拉取容器镜像,并运行容器。

image-20240502222719319

1.5.3 核心组件

组件名称功能描述
etcd轻量级且可靠的分布式键值存储系统,用于保存Kubernetes集群的所有数据。
apiserverKubernetes API的前端,处理资源的增删改查操作,提供认证、授权、访问控制等安全机制。
controller manager执行集群事件的后台处理,包括故障检测、自动扩展、滚动更新等任务。
scheduler决定将新的Pods调度到哪个Node上运行,实现资源的最优分配。
kubelet在每个Node上运行,负责维护容器的生命周期,包括启动容器、监控容器运行状态、管理Volume和网络。
Container runtime负责镜像管理以及Pod和容器的运行,是容器运行时接口(CRI)的实现。
kube-proxy实现Kubernetes服务的负载均衡,提供服务发现功能。

1.5.4 附加组件

组件名称功能描述
CoreDNS集群内的DNS服务,允许Pods通过DNS名称进行通信。
Ingress Controller管理外部访问集群服务的规则,通常用于HTTP路由到集群内的多个服务。
Monitoring and Logging集群通常会集成监控和日志系统,如Prometheus和Elasticsearch,以便于监控和分析集群状态。
Network Plugin实现Pods之间的网络通信和Pod与外部网络的交互。

1.5.5 其他额外的功能组件

组件/工具名称功能描述
Fluentd/Elasticsearch日志收集和存储,通常与Kibana结合使用进行日志可视化和分析。
Prometheus开源监控系统,用于收集和存储指标,监控Kubernetes集群和应用。
HelmKubernetes的包管理器,用于定义、安装和升级Kubernetes应用。
Rook在Kubernetes上部署和管理存储系统的开源项目。
Istio服务网格,提供智能路由、流量管理、策略执行和数据收集。
Cert-Manager自动化证书管理工具,为Kubernetes服务提供和续订TLS证书。
Argo CDGitOps风格的持续交付工具,用于Kubernetes。
Strimzi在Kubernetes上运行Apache Kafka的支持。
VoyagerIngress控制器和HAProxy负载均衡器的云原生解决方案。
TillerHelm的后端服务,管理Helm charts的状态。
Cilium提供网络和安全的扩展,支持细粒度的安全性和网络策略。
Knative构建现代、源代码驱动的、Kubernetes-native应用的库和工具。
MetalLB为Kubernetes集群提供额外的负载均衡层的负载均衡器。
Multus允许Pods使用多个网络接口的网络插件。
Kube-state-metrics提供Kubernetes集群中各种资源的指标收集。
Kubecost成本监控工具,帮助用户理解Kubernetes集群的资源使用和成本。
OpenEBS为Kubernetes提供动态存储的开源存储解决方案。
SPIRE用于Kubernetes的零信任网络和安全的项目。
Kong可以与Kubernetes集成的API网关和服务网格。
GitOps使用Git管理基础设施和应用交付的方法论,通过Git仓库维护Kubernetes集群状态。

1.5.6 Kubernetes系统各个组件调用关系示例

在Kubernetes中部署nginx服务的过程涉及多个组件的协同工作:

步骤组件/角色功能描述
用户请求用户通过kubectl命令行工具发起部署nginx服务的请求。
API ServerKubernetes API Server接收请求并验证,将请求信息写入etcd
SchedulerKubernetes Scheduler监听到Pod创建请求后,选择合适的Node节点部署Pod。
Controller ManagerKubernetes Controller Manager根据Scheduler的决策更新状态并指导Pod在选定的Node上创建。
KubeletKubernetes Kubelet在Node节点上接收Master指令,启动容器运行时拉取镜像并启动Pod。
Pod启动Pod容器运行时创建nginx容器,Pod开始在Node上运行。
Service和kube-proxyService, kube-proxy创建Service对象以访问nginx服务,kube-proxy实现服务发现和负载均衡。
访问服务外部请求通过Service访问nginx服务,Service确保请求分配到所有运行的nginx Pod上。

1.6 Kubernetes架构

1.6.1 基本架构

  • Master节点:负责整个集群的管理和调度工作。它由以下几个主要组件组成:

    • API Server:集群的前端,提供Kubernetes API接口。

    • Scheduler:负责决定将新的Pods分配到哪个Node上。

    • Controller Manager:运行各种控制器,如Deployment Controller、Service Controller等。

    • etcd:轻量级数据库,存储集群的所有数据。

  • Node节点:执行实际工作,运行Pods。每个Node上运行着:

    • Kubelet:负责启动Pods中的容器,以及与Master节点通信。

    • Kube-proxy:负责Pods的网络代理,实现服务发现和负载均衡。

1.6.2 应用部署架构分类

  • 无中心节点架构

    • GlusterFS:一个分布式文件系统,提供可扩展的存储解决方案。

    • Ceph:一个统一的分布式存储系统,支持块设备、对象存储和文件系统。

  • 有中心节点架构

    • HDFS (Hadoop Distributed File System):一个高度可靠的、可扩展的分布式文件系统,设计用于存储大规模数据集。

    • Kubernetes:虽然Kubernetes本身不直接提供存储服务,但它可以与GlusterFS、Ceph等分布式存储系统配合使用,提供强大的存储解决方案。

1.6.3 Kubernetes Cluster组成

  • Master和Node:Kubernetes Cluster由一个或多个Master节点和多个Node节点组成。

  • Kubernetes服务在Node节点上运行的服务,包括但不限于:

    • 容器运行时:如Docker或containerd,负责运行容器。

    • 网络插件:提供Pods之间的网络连接和外部访问。

    • 存储插件:与外部存储系统集成,提供持久化存储。

1.6.4 Kubernetes设计架构

  • Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。

image-20240502222140179


1.6.5 Kubernetes体系结构

image-20240502223518737

步骤组件/角色功能描述
用户提交请求用户通过kubectl提交Pod配置文件(YAML或JSON格式)。
API ServerKubernetes API Server接收并验证Pod创建请求,将配置存储在etcd中。
SchedulerKubernetes Scheduler监听Pod创建请求,选择最合适的Node运行Pod。
KubeletKubernetes Kubelet在选定Node上启动Pod,与容器运行时交互拉取镜像并启动容器。
Replication Controller (RC)Kubernetes Replication Controller监视Pod状态和数量,替换故障Pod以维持指定数量。
ServiceKubernetes Service提供一组相同功能Pods的统一访问接口,保持IP和端口不变。
Kube-proxyKubernetes Kube-proxy实现Service的功能,进行服务发现和负载均衡。

1.6.6 Kubernetes控制节点Master

在Kubernetes中,Master节点的作用就像是一个指挥官,它负责整个集群的管理和决策。

  • 接收命令:当用户通过kubectl命令行工具发起操作,比如部署一个新的Pod,这个命令会发送到Master节点的API Server。

  • 存储状态:API Server是所有请求的入口,它处理这些请求,并将相关的信息持久化到etcd。etcd是一个关键的存储系统,它保存了集群的所有状态信息,包括所有的Pods、Service和配置数据。

  • 调度决策:一旦Pod的创建请求被API Server接受并存储,Scheduler就会介入。Scheduler的角色是策略制定者,它根据集群当前的状态和Pod的调度要求,决定将这个Pod放在哪个Node上运行。

  • 执行操作:Scheduler做出决策后,会通知API Server,API Server更新Pod的状态,指派给选定的Node。然后,Controller Manager会监控这个状态的变化。

  • Node执行:在Node节点上,Kubelet这个组件会定期向API Server报告自己的状态,一旦它接收到新的Pod创建指令,就会与容器运行时(比如Docker)协作,拉取所需的容器镜像,并在Node上启动Pod。

  • 监控和维护:Controller Manager会持续监控集群的状态,确保一切运行如预期。如果有Pod失败,Deployment Controller会替换新的Pod来保持应用的稳定性和可用性。

  • 服务发现和负载均衡:当Pod运行起来后,为了使服务对内部或外部可见,用户可能会创建Service对象。Kube-proxy负责实现服务发现和负载均衡,确保流量可以正确地分配到后端的Pods。

image-20240502223938495

1.6.7 Etcd概述

etcd是Kubernetes集群中不可或缺的组件,它作为一个高可用的键值存储系统,承担着存储集群状态信息的重要职责。

  • 高可用性:etcd通过复制数据到多个节点来保证系统的高可用性,即使部分节点失效,集群仍能正常工作。

  • 键值存储:它提供了一个简单的键值存储接口,用于存储和检索数据。

  • 服务发现:在分布式系统中,etcd可用于服务发现,允许节点相互发现并通信。

  • 轻量级:与ZooKeeper相比,etcd更加轻量级,易于集成和使用。

  • 安全性:支持SSL/TLS,提供了数据传输过程中的加密和认证。

  • 性能:能够支持高并发写操作,满足高性能需求。

  • 一致性:使用Raft一致性算法,保证了分布式系统中数据的强一致性。

1.6.7.1 Etcd的特点
  • 简单性:提供了基于HTTP+JSON的API,使得使用curl命令行工具就能轻松操作。

  • 安全性:支持SSL客户端认证,增强了数据传输的安全性。

  • 快速性:高性能的读写能力,能够应对大量的并发操作。

  • 可信性:基于Raft算法,确保了数据的可靠性和一致性。

1.6.7.2 应用场景
  • Kubernetes Node:存储集群的状态信息,如Pods、Service、ConfigMaps等。

  • Worker Node:在分布式工作节点中,etcd可用于存储和同步工作状态。

  • 服务发现:作为服务注册与发现中心,允许服务实例动态地加入和离开。

  • 消息发布与订阅:可以作为发布/订阅模型的消息中心。

  • 负载均衡:存储负载均衡器的配置信息,以便进行流量分发。

  • 分布式通知与协调:在分布式系统中,用于节点间的通知和协调工作。

  • 分布式锁:提供锁服务,以支持跨多个实例的同步操作。

  • 分布式队列:可以作为分布式队列系统,协调任务的执行。

  • 集群监控:存储集群监控数据,便于跟踪和分析集群状态。

  • Leader选举:在集群中,用于Leader节点的选举过程。

1.6.7 Kubernetes工作节点Node

在Kubernetes集群中,除了Master节点,其他所有机器都被称为Node节点(在早期的版本中也称为Minion节点)。Node节点是集群中执行实际工作负载的地方,它们负责运行容器化的应用程序。

  • 接收任务:Node节点通过Kubelet与Master节点通信,接收运行Pods的任务。这些任务由Master节点的调度器根据资源需求和策略决定。

  • 容器运行时:Kubelet使用容器运行时(如Docker或containerd)来拉取容器镜像,并在Node上启动容器。这是Node节点上实际运行应用程序的地方。

  • 监控和报告:Kubelet持续监控Pods的状态,包括它们的健康状态和资源使用情况,并将这些信息反馈给Master节点。

  • 网络配置:Node上的网络插件负责为Pods配置网络,确保Pods可以相互通信,以及与外部世界通信。

  • Pod管理:Kubelet管理Pods的生命周期,处理Pods的创建、运行和销毁。

  • 日志管理:Node节点还负责收集容器的日志,这些日志对于调试和监控应用程序至关重要。

  • 服务发现和负载均衡:kube-proxy在Node上运行,负责服务发现和实现Pods之间的负载均衡,以及对外提供稳定的服务访问点。

  • 资源监控:Node节点上的资源监控工具(如cAdvisor)收集节点和容器的性能指标,这些信息可以用于监控和调试。

  • 自我修复:如果Pod因为某些原因失败,Kubelet会尝试重启Pod,实现自我修复。

image-20240502224540581

Node节点的主要角色和组件的描述:

组件/概念功能描述
工作负载执行Node节点接收并执行由Master节点分配的Docker容器,运行应用程序。
故障转移Node节点故障时,Master节点自动将工作负载转移到其他健康节点,保证服务连续性。
Kubelet负责启动和管理Pods中的容器,监控容器状态,与Master节点通信,汇报节点健康状况。
资源调度Master节点根据Kubelet提供的信息进行资源使用情况的监控和调度。
通信中断Node节点若在指定时间内未向Master汇报,将被判定为“失联”,Master将转移其工作负载。
Kube-proxy负责实现Kubernetes Service的通信和负载均衡,监控Pods变化,实现服务发现。
Docker Engine提供容器运行时环境,创建和管理容器,保证应用程序在隔离且一致的环境中运行。

1.7 Kubernetes分层架构

  • Kubernetes的架构设计采用了分层的方法,每一层都为上一层提供服务,同时抽象掉底层的复杂性。

层次组件/概念功能描述
核心层API Server, Scheduler, Controller Manager, etcdKubernetes最核心的功能,提供API构建高层应用,对内提供插件式应用执行环境。
应用层Deployment, Service, Ingress定义应用程序的部署状态和访问方式,提供服务发现和负载均衡功能。
服务发现与负载均衡层Service, Ingress管理服务发现和负载均衡,实现外部和内部通信。
集群管理层Node, Pod, kubelet, kube-proxyNode运行Pods,kubelet管理Pods生命周期,kube-proxy负责网络代理。
集群基础设施层Master节点, API Server, Scheduler, Controller ManagerMaster节点控制集群,API Server提供API接口,Scheduler进行Pod调度,Controller Manager运行控制器。
节点基础设施层容器运行时 (如Docker或containerd), OS容器运行时管理容器,操作系统提供运行环境。
存储层Persistent Volumes, Persistent Volume Claims提供持久化存储解决方案,供Pods使用。
安全层认证, 授权, 网络策略确保集群安全性,包括访问控制和网络安全。
底层基础设施硬件资源提供服务器、网络和存储等物理或虚拟硬件资源。
管理层系统度量, 自动化, 策略管理系统度量(基础设施、容器、网络度量), 自动化(自动扩展、动态Provision等), 策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层kubectl命令行工具, 客户端SDK, 集群联邦提供与Kubernetes集群交互的方法。
生态系统Kubernetes外部, Kubernetes内部外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS应用、ChatOps等。内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群配置和管理等。
  • Kubernetes设计理念和功能其实就是一个类似Linux的分层架构,如下图所示

image-20240502225223322

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3:menu导航栏出现多个同一跳转路径的菜单处理

文章目录 需求整理实现思路实现过程 需求整理,实现思路 最近公司想将之前老的项目整理出来,因为这个老项目内容太杂什么页面都往里面塞,导致菜单特别多,公司就像将这个老的项目迁出来,这个旧的项目本来是后端PHP写的。…

【intro】图注意力网络(GAT)

论文阅读 https://arxiv.org/pdf/1710.10903 abstract GAT,作用于图结构数据,采用masked self-attention layers来弥补之前图卷积或类似图卷积方法的缺点。通过堆叠layers,让节点可以添加其邻居的特征,我们就可以给不同的邻居节…

如何更好地使用Kafka? - 事先预防篇

要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现&#…

Cargo - 构建 rust项目、管理依赖包

文章目录 关于 Cargo构建项目创建工程编译运行buildclean 管理依赖添加依赖updatecheck计时 manual rust 安装可参考:https://blog.csdn.net/lovechris00/article/details/124808034 关于 Cargo Cargo 官方文档 : https://doc.rust-lang.org/cargo/crat…

文本转图表的AI工具-Chart-GPT

Chart-GPT Chart-GPT一款基于 GPT 实现的开源工具,可在几秒内,将文本快速转换为各种图表。用户只需在输入字段中输入数据说明和所需的图表类型,Chart-GPT的后台生成器即可建出多种类型的图表,包括条形图、折线图、组合图、散点图、…

「Dasha and Photos」Solution

简述题意 给定一个 n m n \times m nm 的方格,每个格子里有一个小写英文字母。 现在你有 k k k 个 n m n \times m nm 的方格,这些方格都是给定方格的基础上将左上角为 ( a i , b i ) (a_i,b_i) (ai​,bi​),右下角为 ( c i , d i ) …

【LAMMPS学习】八、基础知识(5.11)磁自旋

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

FFmpeg 音视频处理工具三剑客(ffmpeg、ffprobe、ffplay)

【导读】FFmpeg 是一个完整的跨平台音视频解决方案,它可以用于音频和视频的转码、转封装、转推流、录制、流化处理等应用场景。FFmpeg 在音视频领域享有盛誉,号称音视频界的瑞士军刀。同时,FFmpeg 有三大利器是我们应该清楚的,它们…

2024年第九届数维杯数学建模B题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

Ansible-playbook剧本

目录 一、Ansible playbook简介 2.1 playbook格式 2.2 playbook组成部分 二、playbook示例 2.1 yaml文件编写 2.2 运行playbook 2.3 定义、引用变量 2.4 指定远程主机sudo切换用户 ​编辑 2.5 when条件判断 ​编辑​编辑 2.6 迭代 ​编辑 ​编辑 三、总结 Ansib…

2023黑马头条.微服务项目.跟学笔记(五)

2023黑马头条.微服务项目.跟学笔记 五 延迟任务精准发布文章 1.文章定时发布2.延迟任务概述 2.1 什么是延迟任务2.2 技术对比 2.2.1 DelayQueue2.2.2 RabbitMQ实现延迟任务2.2.3 redis实现3.redis实现延迟任务4.延迟任务服务实现 4.1 搭建heima-leadnews-schedule模块4.2 数据库…

简单了解泛型

基本数据类型和对应的包装类 在Java中, 基本数据类型不是继承自Object, 为了在泛型代码中可以支持基本类型, Java给每个基本类型都对应了一个包装类型. 简单来说就是让基本数据类型也能面向对象.基本数据类型可以使用很多方法, 这就必须让它变成类. 基本数据类型对定的包装类…

sql注入练习

1.什么是SQL注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库 2.sql注入原理 攻击者注入一段包含注释符的SQL语…

能将图片转为WebP格式的WebP Server Go

本文完成于 2023 年 11 月 之前老苏介绍过 webp2jpg-online,可以将 webp 格式的图片,转为 jpg 等,今天介绍的 WebP Server Go 是将 jpg 等转为 webp 格式 文章传送门:多功能图片转换器webp2jpg-online 什么是 WebP ? WebP 它是由…

Vue 路由

单应用程序 SPA - Single Page Application 所有功能在一个html页面上实现 单页面应用 多用于 系统类网站/内部网站/文档类网站/移动端站点 多页面应用 多用于 公司官网/电商类网站 路由 单页面应用按需更新页面,需要明确访问路径和组件的对应关系 Vue中的路…

重学java 30.API 1.String字符串

于是,虚度的光阴换来了模糊 —— 24.5.8 一、String基础知识以及创建 1.String介绍 1.概述 String类代表字符串 2.特点 a.Java程序中的所有字符串字面值(如“abc”)都作为此类的实例(对象)实现 凡是带双引号的,都是String的对象 String s "abc&q…

修改ElTable组件的样式(element-plus)

效果展示 <div class"table_main"><ElTable:data"tableList":header-cell-style"{color: #ffffff,background: #6f7f93,}"class"table_border":highlight-current-row"false"><ElTableColumn type"inde…

CentOS 自建gitlab仓库:安装相关工具

所需环境 Node 安装项目依赖、项目打包运行Nginx 前端项目部署&#xff08;正向代理、反向代理、负载均衡等&#xff09;Git 自动化部署时 拉取代码使用GitLab 代码仓库GitLab-Runner GitLab的CI/CD执行器 一、安装Node 检测是否已安装 常用node -v 命令检测。 如果已安装&a…

为什么你的企业需要微信小程序?制作微信小程序有什么好处?

什么是小程序&#xff1f; WeChat小程序作为更大的WeChat生态系统中的子应用程序。它们就像更小、更基本的应用程序&#xff0c;在更大的应用程序&#xff08;WeChat&#xff09;中运行。这些程序为用户提供了额外的高级功能&#xff0c;以便在使用WeChat服务时加以利用。根据…

DeepSeek发布全新开源大模型,GPT-4级别能力 价格仅百分之一

最新国产开源MoE大模型&#xff0c;刚刚亮相就火了。 DeepSeek-V2性能达GPT-4级别&#xff0c;但开源、可免费商用、API价格仅为GPT-4-Turbo的百分之一。 因此一经发布&#xff0c;立马引发不小讨论。 从公布的性能指标来看&#xff0c;DeepSeek-V2的中文综合能力超越一众开源…