K8s组件全解析,你需要知道的一切秘密

news2024/11/16 7:53:06

当你部署完 Kubernetes,便拥有了一个完整的集群。

Kubernetes,作为目前最流行和广泛采用的容器编排和管理平台,背后有一系列强大的组件,共同协作以实现容器化应用的自动化部署、弹性扩展、服务发现和负载均衡等关键功能。本文将介绍 Kubernetes 集群中的主要组件,揭示它们的作用和相互关系,为您提供关于 Kubernetes 内部工作原理的深入理解。

​​​​​​​

安装前有几个概念要了解下

  • Node(节点): 在 Kubernetes 中,节点是集群中的工作机器。每个节点上都运行着容器,由 Kubernetes 管理。
  • API Server(API 服务器): API 服务器是 Kubernetes 集群控制平面的前端,处理来自用户和其它组件的 API 请求,验证请求并将配置数据持久化。
  • kubelet: kubelet 是运行在每个节点上的代理,它负责与 Master 节点通信,确保节点上运行的容器处于预期状态。
  • kube-proxy: kube-proxy 负责维护节点上的网络规则,以及为服务提供负载均衡和代理功能,以确保服务之间的网络通信。
  • etcd: etcd 是一个分布式键值存储系统,用于保存集群的配置数据、状态和元数据。它是 Kubernetes 控制平面中的重要组件之一。
  • Scheduler(调度器): 调度器负责将新创建的 Pod 分配到合适的节点上,考虑节点资源和约束等因素来进行调度决策。
  • Controller Manager(控制器管理器): 控制器管理器包含多个控制器,用于监控集群状态的变化,并根据所需的状态进行调整。例如,Replication Controller 控制器负责维护副本数。

1. kube-apiserver

kube-apiserver 是 Kubernetes 控制平面的前端,扮演着用户和其它组件与集群交互的入口。它处理来自客户端、命令行工具和控制器的 API 请求,执行验证、授权和数据持久化,将集群的配置状态存储在 etcd 中。

kube-apiserver 的功能和稳定性对于整个集群的可靠性至关重要。

功能和作用:

  1. API 前端:kube-apiserver 为 Kubernetes 集群提供了一个统一的 API 入口,允许用户、命令行工具和各种组件通过 RESTful API 与集群进行交互。这包括创建、更新和删除资源对象,如 Pod、Service、Deployment 等。
  2. 认证和授权:kube-apiserver 负责验证请求的身份,确保只有经过身份验证的用户和组件才能访问 API。此外,它也负责授权,根据用户的权限来决定是否允许请求对资源的操作。
  3. 数据持久化: 集群的配置数据和状态信息存储在 etcd 中,而 kube-apiserver 负责与 etcd 进行通信,将配置数据持久化到 etcd 中,以及从 etcd 中读取数据。
  4. 资源管理:kube-apiserver 负责监控资源的状态和变化,并在资源状态发生变化时,通知控制器和其他组件进行相应的操作。这有助于保持集群中各个资源的一致性和期望状态。
  5. 扩展性和自定义:kube-apiserver 支持多版本 API,允许用户自定义资源类型和自定义控制器,以满足特定的业务需求。

2. etcd

etcd 是 Kubernetes 的分布式键值存储系统,被用于保存集群的配置数据、状态和元数据。作为 Kubernetes 控制平面的持久化存储,etcd 的可靠性和一致性对整个集群的稳定运行至关重要。

etcd 的主要特点包括:

  1. 一致性: etcd 确保数据存储的强一致性。它使用 Raft 共识算法,使集群中的多个节点能够就数据的状态达成一致。
  2. 分布式: etcd 被设计用于在多个节点构成的集群中运行。这确保了冗余性和容错性。
  3. 键值存储: etcd 提供了简单的键值数据模型,您可以使用键存储和检索数据。值可以是字符串、二进制数据,甚至是序列化的数据结构,如 JSON。
  4. 观察机制: etcd 支持观察机制,允许应用程序在特定键被修改时接收通知。这对于构建对配置或其他关键数据的更改做出反应的应用程序非常有用。
  5. HTTP/gRPC API: etcd 提供了 HTTP 和 gRPC API,从而方便您使用不同的编程语言和平台与集群交互。
  6. 配置管理: etcd 经常用于存储分布式应用的配置数据。这使得跨多个应用程序实例更新配置设置变得更加容易。
  7. 服务发现: etcd 可用于服务发现,允许应用程序动态地发现分布式系统中的服务位置。
  8. 领导者选举: etcd 的 Raft 共识算法也可以用于领导者选举场景,其中分布式系统需要选择一个协调的领导者节点。
  9. 安全性: etcd 支持认证和传输加密,以确保集群内的通信安全性。

3. kube-scheduler

kube-scheduler 是 Kubernetes 集群中的一个核心组件,负责在集群中选择合适的节点(Node)来运行新创建的 Pod。它根据一系列的策略和条件,将 Pod 分配到最合适的节点上,以实现负载均衡和资源利用最优化。

以下是 kube-scheduler 的主要工作原理和特点:

  1. 节点选择策略:kube-scheduler 根据一组可配置的节点选择策略来决定将 Pod 分配到哪个节点。这些策略可以根据资源需求、亲和性(Affinity)、反亲和性(Anti-Affinity)、节点污点(Taints)等因素进行设置。
  2. 资源利用优化:kube-scheduler 会考虑集群中每个节点的资源利用情况,以确保新的 Pod 被分配到资源充足的节点上,从而避免资源浪费和过度拥塞。
  3. 亲和性和反亲和性:kube-scheduler 可以配置 Pod 对某些节点的亲和性或反亲和性。这意味着 Pod 可以被分配到满足指定标签的节点上,或者避免分配到具有特定标签的节点上。
  4. 节点污点和容忍度: 节点可以设置污点,表示它们有某些限制条件,如特定的硬件或软件。Pod 可以通过容忍度设置来表示它们可以容忍的节点污点,这样 kube-scheduler 就会将 Pod 分配到与其容忍度匹配的节点上。
  5. 插件扩展:kube-scheduler 允许用户通过插件来定制节点选择过程。这使得用户可以根据自己的需求添加自定义的调度策略。
  6. 可扩展性:kube-scheduler 支持同时运行多个调度器实例,每个实例可以具有不同的配置和策略。这种架构可以根据需求进行横向扩展,以处理更大规模的集群。
  7. 调度延迟: 由于调度器需要考虑多种因素来做出决策,因此在创建新 Pod 时可能会出现一定的调度延迟。这取决于集群的负载、调度策略和其他因素。

4. kube-controller-manager

kube-controller-manager 是 Kubernetes 集群中的一个核心组件,它负责管理各种控制器,监控集群状态,以及确保集群中的实际状态与期望状态保持一致。这些控制器负责自动化集群中的各种任务和功能,例如副本控制、节点管理、服务和端点等。

以下是 kube-controller-manager 的一些主要功能和控制器示例:

  1. Replication Controller 控制器: 负责管理Pod副本数,确保在集群中始终有指定数量的Pod实例在运行。如果Pod数目少于期望的数量,Replication Controller 将创建新的 Pod 副本。
  2. Deployment 控制器: 基于声明式配置,管理 Pod 的部署和更新。它可以创建和管理多个版本的应用程序,支持滚动更新和回滚。
  3. Node Controller 控制器: 负责监控节点的状态,并确保集群中的节点数目保持在所需的范围内。如果节点离线或不可用,Node Controller 将采取措施进行调整。
  4. Service Controller 控制器: 确保 Service 对象中定义的网络终结点与底层 Pod 的变化保持一致。它通过更新底层的 Endpoints 对象来实现。
  5. Namespace Controller 控制器: 确保 Namespace 的创建和删除符合预期,并在命名空间被删除时清理相关资源。
  6. Persistent Volume Controller 控制器: 监控 Persistent Volume 和 Persistent Volume Claim 的状态,确保正确的存储资源分配。
  7. Job Controller 控制器: 用于管理一次性任务,确保任务的成功执行。它可以处理任务的重试和失败。
  8. DaemonSet 控制器: 确保每个节点上都运行有一个 Pod 的副本,适用于在每个节点上运行特定任务的场景。

5. kubelet

kubelet 是 Kubernetes 集群中的一个重要组件,运行在每个节点上,负责管理该节点上的容器和Pod。它与控制平面(如 API Server 和 kube-controller-manager)通信,确保节点上的容器与期望的状态保持一致。

以下是 kubelet 的一些主要功能和工作原理:

  1. Pod 管理:kubelet 负责管理节点上的 Pod。它根据从 API Server 获取的 Pod 定义(PodSpec)来创建、启动、停止和删除容器。
  2. 容器生命周期管理:kubelet 负责监控容器的运行状态,并在需要时重新启动失败的容器。它还会处理容器的存储卷挂载、网络设置等操作。
  3. 资源管理:kubelet 监控节点上的资源利用情况,确保不超出节点的资源限制。它可以根据资源请求和限制设置合适的 QoS 类别,并调整 Pod 资源分配。
  4. 健康检查和探针:kubelet 通过周期性的健康检查和探针来监控容器的健康状态。如果容器不健康,kubelet 将采取相应的措施,如重新启动容器或从服务中移除。
  5. Pod 事件和状态报告:kubelet 会将节点上发生的事件和状态信息报告给集群的 API Server,以便控制平面能够跟踪每个节点和 Pod 的状态。
  6. 与控制平面通信:kubelet 与 API Server 和 kube-controller-manager 进行通信,以获取 Pod 定义、报告状态,以及接收指令来启动或停止容器。
  7. Pod 生命周期钩子:kubelet 支持在容器生命周期各个阶段执行用户定义的钩子,如容器创建前后、停止前后等。
  8. 资源配额和限制:kubelet 根据 Pod 的资源请求和限制来监视和限制容器的资源使用。
  9. 镜像管理:kubelet 从指定的容器镜像仓库中下载镜像,以供启动容器。

6. kube-proxy

kube-proxy 是 Kubernetes 集群中的一个核心组件,负责实现集群内部的网络通信。它通过维护节点上的网络规则和转发规则,为 Pod 提供网络代理和负载均衡功能,以便让集群中的各个 Pod 能够相互通信。

以下是 kube-proxy 的一些主要功能和工作原理:

  1. 负载均衡:kube-proxy 通过创建虚拟 IP 地址或 IPVS 负载均衡规则,将服务(Service)的流量分发到多个后端 Pod。这使得集群内的应用可以在多个实例之间实现负载均衡。
  2. 网络代理: 对于服务的流量,kube-proxy 在节点上创建规则以将流量重定向到正确的后端 Pod。这种代理方式使得客户端能够透明地访问服务,而无需知道服务背后的 Pod 是如何部署的。
  3. Service 实现模式:kube-proxy 支持多种 Service 实现模式,如 iptables、IPVS、以及 userspace。不同模式在不同的网络环境中提供不同的性能和特性。
  4. Service Discovery:kube-proxy 还提供了服务发现的功能,允许客户端通过 Service 名称来访问服务,而不必知道后端 Pod 的具体 IP 地址。
  5. 规则维护:kube-proxy 监控 Service 和 Endpoint 的变化,以及 Pod 的增删变化。如果有变化,它会更新相应的规则,确保网络流量被正确地路由到目标 Pod。
  6. 环境适应性:kube-proxy 的底层实现方式取决于集群节点的操作系统和网络环境。它会根据环境的差异来选择适当的实现模式。
  7. 高可用性: 通常情况下,每个节点上都运行有一个 kube-proxy 实例,以确保在节点故障时仍然可以维护服务的连通性。

7. 容器运行时(Container Runtime)

容器运行时(Container Runtime)是负责创建、运行和管理容器的软件组件。在 Kubernetes 集群中,容器运行时负责在节点上创建和管理容器化的应用程序。

Kubernetes 不直接与容器进行交互,而是通过容器运行时来管理容器。它通过与容器运行时交互来创建、启动、停止和删除容器,以及管理容器的生命周期。

以下是一些常见的容器运行时:

  1. Docker: Docker 是最为广泛使用的容器运行时。它使用 Docker 镜像来创建和管理容器。Docker 的客户端和服务端模型为容器提供了良好的抽象。
  2. containerd: containerd 是一个轻量级的容器运行时,最初是由 Docker 开发的,后来成为一个独立的项目。它提供了容器的基本功能,如创建、启动和停止容器。
  3. CRI-O: CRI-O 是专门为 Kubernetes 设计的容器运行时。它遵循 Kubernetes 容器运行时接口(CRI),支持容器的生命周期管理和镜像管理。
  4. rkt(Rocket): rkt 是由 CoreOS 开发的容器运行时,具有一些特点,如强调安全性、简化的镜像格式等。
  5. Kata Containers: Kata Containers 是一个开源项目,将虚拟机和轻量级容器技术相结合,提供更高的隔离性和安全性。
  6. gVisor: gVisor 是 Google 开源的一个容器运行时,提供了沙箱机制,增强了容器的安全性。

8. CoreDNS / kube-dns

CoreDNS 和 kube-dns 都是 Kubernetes 集群中用于域名解析(DNS)的服务。它们的作用是将 Pod 名称和 Service 名称解析为相应的 IP 地址,从而实现在集群内部进行服务发现和网络通信。

这两者的功能相似,但有些差异。下面我会为你详细解释它们的特点和用途:

  • kube-dns:

kube-dns 是 Kubernetes 最早引入的 DNS 解决方案,它由三个部分组成:

  1. kube-dns Server(SkyDNS): 这是一个 DNS 服务器,负责在 Kubernetes 集群内为服务提供域名解析。它维护着一个 DNS 记录,将 Service 名称映射到相应的 Pod IP 地址。
  2. etcd:kube-dns 使用 etcd 来存储和管理 DNS 记录。这些记录包括 Service 和 Pod 的域名映射关系。
  3. Sidecar 容器: 为了让 Pod 能够访问 kube-dns,kube-dns 在每个节点上部署一个名为 "kube-dns" 的 Sidecar 容器。这个容器监听 Pod 中的 DNS 查询,并将其转发给 kube-dns 服务器。
  • CoreDNS:

CoreDNS 是一个可插拔的、现代化的 DNS 服务器,逐渐替代了 kube-dns,成为 Kubernetes 的默认 DNS 解决方案。它具有以下特点:

  1. 模块化架构: CoreDNS 使用模块化架构,允许通过插件来扩展和定制 DNS 功能。这使得它更加灵活和易于扩展。
  2. 灵活的配置: CoreDNS 使用 Corefile 文件来配置域名解析规则,配置语法更加直观和易于理解。
  3. 支持多种后端: CoreDNS 支持多种后端数据源,包括文件、etcd、Kubernetes API 等,这使得它可以更好地集成到不同的环境中。
  4. 性能: CoreDNS 被设计为轻量级且高性能的 DNS 服务器,具有更好的性能表现。

9.Node

在 Kubernetes 中,"Node" 是指集群中的一个工作节点(Worker Node)。工作节点是集群中的计算资源,负责运行容器化应用程序和管理与之相关的资源。每个节点都是一个独立的物理机器或虚拟机,它们一起构成了 Kubernetes 集群的基础架构。

每个节点上都运行了一些关键组件,其中最重要的是 kubelet。以下是节点的主要组成部分和功能:

  1. Kubelet:kubelet 是运行在每个节点上的代理,负责与 Kubernetes 控制平面通信,并确保节点上的容器和 Pod 按照预期运行。它会根据从 API Server 获取的 Pod 定义来创建和管理容器。
  2. Container Runtime: 容器运行时是负责在节点上创建和运行容器的软件。常见的容器运行时包括 Docker、containerd、CRI-O 等。
  3. Kube-proxy:kube-proxy 负责维护节点上的网络规则和转发规则,以支持服务发现和负载均衡。它为 Pod 提供了网络代理功能。
  4. CNI 插件: CNI(Container Network Interface)插件负责配置和管理容器的网络连接。它们确保 Pod 能够与集群内部和外部进行通信。
  5. 容器存储卷插件: 这些插件负责将存储卷(例如 Persistent Volume)挂载到容器中,以便应用程序可以访问持久化的数据。
  6. Node Agent: 节点代理是运行在节点上的一些辅助组件,用于收集节点的健康状况、资源利用情况等信息,并向控制平面报告状态。
  7. 资源管理器: 资源管理器(如 kubelet)监控节点上的资源使用情况,确保不超出节点的资源限制。
  8. 操作系统和硬件: 每个节点都运行有操作系统和底层硬件,它们提供了计算、存储和网络资源,用于运行容器化应用程序。

10.Dashboard

1、几款k8s web管理界面工具:

  • Kubernetes Dashboard:这是官方提供的基于网页的Kubernetes用户界面,可以用来部署和管理容器应用,监控集群资源,排查问题等。您可以通过 kubectl apply -f 命令来部署Dashboard,并通过 kubectl proxy 命令来访问Dashboard。。
  • Rancher:这是一个开源的企业级多集群Kubernetes管理平台,可以实现Kubernetes集群在混合云和本地数据中心的集中部署和管理,提供了丰富的功能和易用的界面。您可以通过 docker run rancher/rancher 命令来启动Rancher,并通过 http://<SERVER_IP>:8080 来访问Rancher。更多详情请参考。
  • Kuboard:这是一款基于Kubernetes的微服务管理界面,旨在帮助用户快速在Kubernetes上落地微服务。它提供了简洁的仪表盘,方便的应用部署和日志查看,以及完善的中文文档和教程。您可以通过 kubectl apply -f 命令来部署Kuboard,并通过 http://<your.k8s.ip>:32567 来访问Kuboard。
  • Lens:这是一款自称为“您管理Kubernetes集群所需的唯一IDE”的开源免费的桌面应用程序,支持多平台和多集群。它提供了直观的用户界面,方便地查看集群状态,监控性能指标,管理工作负载和服务等。您可以从[6]下载Lens,并使用kubeconfig文件来连接Kubernetes集群。

2、Kubernetes Dashboard

Kubernetes Dashboard 是一个用于可视化管理和监控 Kubernetes 集群的 Web 用户界面。它提供了一种图形化的方式来查看和管理集群中的资源、应用程序和服务,使得用户可以更方便地进行操作和监控。

Kubernetes Dashboard 的主要特点和功能包括:

  1. 资源概览: 提供集群中各种资源的概览,如节点、Pod、服务、副本控制器、命名空间等。
  2. Pod 和容器管理: 允许用户查看和管理 Pod 和容器的状态、日志和配置。
  3. 应用程序部署: 提供一个图形界面,可以创建和管理应用程序部署、副本集和服务。
  4. 服务发现: 显示集群中的服务,以及它们与后端 Pod 的关联关系。
  5. 命名空间管理: 允许用户创建和管理命名空间,用于隔离不同的项目和应用程序。
  6. 事件和日志: 显示集群中的事件和日志,帮助用户了解发生的事件和问题。
  7. 资源监控: 提供实时的资源监控信息,如 CPU 和内存的使用情况。
  8. 用户权限: 可以根据用户角色和权限设置,控制用户对集群资源的访问和操作权限。
  9. 扩展插件: 可以通过插件来扩展 Dashboard 的功能,添加自定义的仪表板和视图。

11.网络插件

Kubernetes 集群需要网络插件来管理容器和 Pod 之间的网络通信,以及服务发现和负载均衡等网络功能。不同的网络插件提供不同的网络模型和功能,您可以根据集群的需求选择适合的插件。以下是一些常见的 Kubernetes 网络插件:

  1. Flannel: Flannel 是一个轻量级的网络插件,基于虚拟网络的方式,使用了多种后端实现,如基于 Overlay 的 VXLAN 和基于 Host-Gateway 的方式。它创建了一个覆盖整个集群的虚拟网络,使得 Pod 可以跨节点通信。
  2. Calico: Calico 是一个高性能的网络插件,支持 IP 意识型的路由和 ACL,可以在大规模的集群中提供高效的网络连接。它利用 BGP 协议来实现路由,并通过 Network Policy 实现安全组规则。
  3. Cilium: Cilium 是一个强大的网络和安全插件,基于 Linux 内核的 BPF(eBPF)技术。它提供了更细粒度的网络和安全策略,支持 HTTP、gRPC 和其他应用层协议的层级路由和负载均衡。
  4. Weave Net: Weave Net 是一个支持多云环境的网络插件,使用覆盖网络技术,可以在不同的云和物理环境中连接 Pod。
  5. Antrea: Antrea 是一个基于 Open vSwitch 的 CNI 插件,它提供了网络连接、安全策略和服务发现等功能。
  6. Multus CNI: Multus 是一个多网络支持的 CNI 插件,允许在一个 Pod 中使用多个网络接口。这对于实现多网络场景(如多个 IP 地址、多个网段)非常有用。


如果文章对你有帮助,欢迎关注+点赞!

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

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

相关文章

环保环卫行业案例 | 燕千云助力高能环境搭建数智化IT服务管理体系及平台

当前环境卫生问题在全球已引起前所未有的关注&#xff0c;而促进健康又成为环境与发展所关注的核心问题。随着数字化时代的到来&#xff0c;环保环卫行业呈现出多个发展趋势&#xff0c;随着业务系统规模的不断扩大&#xff0c;信息系统的运维问题也日益突出&#xff0c;需要得…

Linux6.41 Kubernetes 对外服务之 Ingress

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes 对外服务之 Ingress一、Ingress 简介1.NodePort2.LoadBalancer3.externalIPs4.Ingress 二.Ingress 组成1.ingress2.ingress-controller3.总结 三、Ingress-Nginx 工作原理四、ingress 暴露服务的方式1.DaemonSetHostNetwor…

详解排序算法(附带Java/Python/Js源码)

冒泡算法 依次比较两个相邻的子元素&#xff0c;如果他们的顺序错误就把他们交换过来&#xff0c;重复地进行此过程直到没有相邻元素需要交换&#xff0c;即完成整个冒泡&#xff0c;时间复杂度。 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换它们两个&#xff1b;…

MATLAB中circshift函数转化为C语言

背景 有项目算法使用matlab中circshift函数进行运算&#xff0c;这里需要将转化为C语言&#xff0c;从而模拟算法运行&#xff0c;将算法移植到qt。 MATLAB中circshift简单介绍 circshift是循环移位函数。可以使用于数组和矩阵元素的循环移位。 当A是数组 Bcircshift(A,p);如果…

大模型时代,如何以 SDS 助力 AI 发展?

本文根据 XSKY星辰天合产品总监赵琳在 2023 闪存峰会上的演讲。该峰会主题为“芯存储 AI 未来”&#xff0c;由 DOIT 传媒主办、杭州华澜微电子股份有限公司协办&#xff0c;于 8 月 29-30 日在杭州召开。 星辰天合产品总监赵琳在 2023 闪存峰会上发表演讲 人工智能已经从经典…

aac音频格式怎么转mp3?这种转换方法很简单

AAC格式和MP3格式都是数字音频格式&#xff0c;但它们使用不同的音频压缩算法。虽然AAC格式在音质和文件大小方面表现出色&#xff0c;但是不是所有的设备都支持该格式。相比之下&#xff0c;MP3格式的兼容性更好&#xff0c;可以在各种设备和操作系统上播放&#xff0c;因此转…

深入浅出:手把手教你实现单链表

一、什么是链表 链表是一种链状数据结构。简单来说&#xff0c;要存储的数据在内存中分别独立存放&#xff0c;它们之间通过某种方式相互关联。 如果我们使用C语言来实现链表&#xff0c;需要声明一个结构体作为链表的结点&#xff0c;结点之间使用指针关联。 二、单向链表的结…

软件测试(黑盒测试、白盒测试、灰盒测试)

软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种 一、黑盒测试 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑&#xff0c;基于代码输入有哪些应该输出什么进行测试的方法。其方法有&#xff1a;基于直觉和经验的方法&#xff08;IEBT&#xff09;、基于需…

b站手机缓存文件转MP4

b站缓存的文件 音频、视频、弹幕是分开的 这里我只用到了音频和视频所以只介绍这一部分 b站的缓存视频文件和路径结构如下 默认缓存路径 内部存储\Android\data\tv.danmaku.bilil\download\89720189 文件夹结构 文件夹 c_738583 这是单个视频的缓存文件夹 进入c_738583文件夹…

isEmpty 和 isBlank 的区别

干了3年java&#xff0c;代码中 isEmpty 和 isBlank 的区别 都不知道&#xff0c;一顿瞎用。也许你两个都不知道&#xff0c;也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外&#xff0c;并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们…

【黑马头条之项目部署_持续集成Jenkins】

本笔记内容为黑马头条项目的项目部署_持续集成部分 目录 一、内容介绍 1、什么是持续集成 2、持续集成的好处 3、今日内容 二、软件开发模式 1、软件开发生命周期 2、软件开发瀑布模型 3、软件的敏捷开发 三、Jenkins安装配置 1、Jenkins介绍 2、Jenkins环境搭建 …

XP-CLR分析学习笔记

XP-CLR分析笔记 生物信息学和遗传学是相互交织的两个学科&#xff0c;共同致力于解读生物体内复杂的基因信息。这些信息有助于理解物种的演化&#xff0c;疾病的起因&#xff0c;以及个体差异等方面。 XP-CLR&#xff08;Cross Population Composite Likelihood Ratio&#xff…

《Linux从练气到飞升》No.19 进程等待

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

【python爬虫】6.爬虫实操(带参数请求数据)

文章目录 前言项目&#xff1a;狂热粉丝分析过程什么是带参数请求数据如何带参数请求数据 代码实现被隐藏的歌曲清单什么是Request Headers如何添加Request Headers 复习 前言 先来复习一下上一关的主要知识吧&#xff0c;先热个身。 Network能够记录浏览器的所有请求。我们最…

钡铼技术BL120PN Profinet和Profibus DP转Modbus网关介绍

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; BL120PN是一款Profinet、Profibus D转Modbus网关。 BL120PN下行采集支持&#xff1a;Profinet、Profibus D。 BL120PN上行支持&#xff1a;Modbus RTU、Modbus TCP协议。 BL120PN采…

实现微信H5的方法!(非官方产品)

实现微信H5的方法&#xff01;&#xff08;非官方产品&#xff09; WAP支付也叫H5支付&#xff0c;均指的是手机页面支付&#xff0c; 微信称之为H5支付&#xff0c;支付宝则称为WAP支付。 那H5也叫WAP支付是可以应用手机页面支付和APP支付的&#xff0c; 不限制包名可跨平台调…

元素周期表-背诵元素周期表更简单

元素周期表是一款极其炫酷、简约的记忆和查看周期表元素的软件。 【软件特点】&#xff1a; ●有趣谐音速记&#xff1a;软 件内有按周期、化合价、元素符号分类使用谐音速记的小技巧。 ●3D元素周期表&#xff1a;用户可以选择按表面、球体、螺旋、网格来3D炫酷的展示元素周期…

【技术】视频云存储/安防监控视频/智能分析网关V3裸土未覆盖/苫盖算法详解

随着经济的发展和建筑工地的增多&#xff0c;对于土堆的裸露情况实时监测和管理变得尤为重要。为了解决这一问题&#xff0c;TSINGSEEE青犀AI智能分析网关V3的裸土未苫盖算法就能很好地解决。 AI算法模型可以实时识别路面/建筑工地中的土堆是否裸露&#xff0c;将工地、道路等…

煤矿监管电子封条算法

煤矿监管电子封条算法基于yolov5网络模型深度学习框架&#xff0c;先进技术的创新举措&#xff0c;煤矿监管电子封条算法通过在现场运料运人井口、回风井口、车辆出入口等关键位置进行人员进出、人数变化和设备开停等情况的识别和分析。YOLO检测速度非常快。标准版本的YOLO可以…

特斯拉新款Model3曝光:搭载HW3.5硬件,雷达已移除,今日上市?

根据最新的消息&#xff0c;特斯拉新款 Model 3 将有一些令人瞩目的变化和改进。首先&#xff0c;前脸的设计仍然采用封闭式造型&#xff0c;但新车的前保险杠进行了微调&#xff0c;并且换装了全新款式的大灯。 这些改变使新款 Model 3 在外观上与现款车型有了明显的差异&…