首页 > 其他分享 >kubernetes 基本概念

kubernetes 基本概念

时间:2024-12-26 22:30:44浏览次数:8  
标签:kubernetes Kubernetes 节点 API 集群 Pod Server 基本概念

   学习的目标是适用yml配置文件,使我们要构建的点描述出来。

  Kubernetes(简称 K8s)是一个开源的容器编排平台,旨在自动化容器化应用程序的部署、扩展和管理。它提供了丰富的功能集,包括但不限于声明式配置、自我修复、负载均衡和服务发现等。以下是关于 Kubernetes 的一些关键知识点。

  1. 核心概念

  •   集群(Cluster):Kubernetes 集群由一组节点组成,这些节点可以是物理机或虚拟机。每个集群至少包含一个控制平面节点(Control Plane Node)和多个工作节点(Worker Nodes)。集群是 Kubernetes 管理计算资源的基本单位,计算资源的分配是根据集群来的。
  • Pod:这是 Kubernetes 中最小的可部署单元,可以包含一个或多个容器。Pod 内的容器共享网络命名空间和存储卷,这使得它们之间的通信更加高效。Pod 是 Kubernetes 中的应用程序实例的基本组成部分。
  • Service:Service 定义了一组 Pod 的逻辑集合和访问策略。它是 Kubernetes 中用于实现服务发现和负载均衡的关键组件。通过 Service,即使底层 Pod 发生变化,外部客户端仍然可以通过固定的 IP 地址和端口访问应用。
  • Deployment:用于声明式地管理和更新无状态应用程序的状态。它可以确保指定数量的 Pod 副本始终处于运行状态,并支持滚动更新和回滚。Deployment 是最常用的控制器之一,适用于大多数 Web 应用程序
  • StatefulSet:与 Deployment 类似,但专为有状态应用设计,提供有序的部署、扩展和删除操作,以及持久化的存储。StatefulSet 保证了 Pod 的唯一身份标识和顺序启动/终止特性
  • DaemonSet:确保所有(或某些)节点上运行一个 Pod 的副本,常用于日志收集、监控等全局服务。DaemonSet 保证每个符合条件的节点上都有一个 Pod 运行。
  • Job 和 CronJob:Job 用于执行一次性任务,而 CronJob 则用于定时执行任务。两者都适合批处理作业或其他非长期运行的服务。
  • ConfigMap 和 Secret:用于将配置数据和敏感信息(如密码)从镜像中分离出来,以便更安全地管理和更新。ConfigMap 和 Secret 可以被 Pod 作为环境变量或挂载为文件系统的一部分使用。
  • Volume:用于挂载持久存储到 Pod 中,支持多种类型的存储后端,如本地磁盘、云存储等。Volume 确保了 Pod 在重启或迁移时能够保持其数据不变

  2.控制器(Controller)

  控制器通过 API Server 监控集群的状态,并根据需要创建、更新或删除资源来达到期望的状态。常见的控制器包括:  

  • ReplicaSet:确保指定数量的 Pod 副本保持运行。通常由 Deployment 控制器自动创建和管理。
  • Horizontal Pod Autoscaler (HPA):根据 CPU 使用率或其他自定义指标自动调整 Pod 数量。HPA 可以根据预设规则动态增加或减少 Pod 的数量,以适应流量的变化

    3.API Server

  API Server 是 Kubernetes 控制平面的前端,提供了 RESTful 接口供用户和其他组件与集群交互。所有的集群管理操作都是通过 API Server 进行的。API Server 不仅负责接收来自用户的请求,还负责验证、授权以及将命令分发给其他控制平面组件。

  4.etcd

  etcd 是一个高可用的键值存储系统,用于保存集群的所有配置数据和状态信息。它是 Kubernetes 控制平面的一部分,确保数据的一致性和持久性。etcd 在 Kubernetes 架构中扮演着至关重要的角色,因为它存储了所有集群级别的元数据

  5. 调度器(Scheduler)

      调度器负责决定将 Pod 分配到哪个节点上运行。它会考虑各种因素,如资源需求、亲和性规则、污点和容忍度等,以实现最佳的资源利用率和性能。调度器在选择节点时还会考虑到节点的健康状况和当前负载情况

  6. kubelet

  kubelet 是运行在每个节点上的代理,负责与 API Server 通信并管理该节点上的 Pod 生命周期。它还会定期向 API Server 汇报节点的状态。kubelet 是 Kubernetes 架构中的重要组成部分,它确保了 Pod 在节点上的正确执行

  7. kube-proxy

  kube-proxy 是 Kubernetes 网络代理,运行在每个节点上,维护网络规则并执行流量转发,以确保 Service 和 Pod 之间的正确通信。kube-proxy 支持多种模式,包括 iptables 和 IPVS,以优化网络性能

  8. CNI(Container Network Interface)

  CNI 是一种标准接口,用于定义容器网络插件。Kubernetes 支持多种 CNI 插件,如 Calico、Flannel、Weave Net 等,以满足不同的网络需求。CNI 插件允许容器之间进行跨主机通信,并且对于多租户环境至关重要

  9. Ingress

  Ingress 是一种 API 对象,用于管理外部对集群内服务的 HTTP(S) 访问。它通常与 Ingress Controller 结合使用,后者实现了路由规则并将流量分发给适当的服务。Ingress 提供了比普通 Service 更灵活的入口点配置选项

  10. Helm

  虽然不是 Kubernetes 的一部分,但 Helm 是一个流行的包管理工具,用于简化 Kubernetes 应用程序的部署和管理。它允许你通过 Chart 来打包、分发和安装复杂的 Kubernetes 应用。Helm 使得复杂应用的部署变得更加简单和可重复

  11. 安全性

  • RBAC(基于角色的访问控制):用于定义和限制用户、服务账户对集群资源的访问权限。RBAC 确保只有授权用户才能执行特定的操作,增强了集群的安全性

  • Network Policies:用于定义 Pod 之间的网络通信规则,增强网络安全。Network Policies 可以限制哪些 Pod 可以相互通信,从而减少潜在的安全风险

TLS 加密:确保 API Server 和其他组件之间的通信安全。TLS 加密防止了中间人攻击,并保护敏感信息免受窃听

  12. 日志和监控

  • Prometheus:常用的监控解决方案,支持多维度数据模型和灵活的查询语言。Prometheus 可以收集集群内的各种指标,并提供警报机制,帮助运维人员及时发现问题
  • ELK Stack (Elasticsearch, Logstash, Kibana) 或 EFK Stack (Elasticsearch, Fluentd, Kibana):用于集中收集、处理和可视化日志数据。这些工具可以帮助开发者分析日志,快速定位问题所在

标签:kubernetes,Kubernetes,节点,API,集群,Pod,Server,基本概念
From: https://www.cnblogs.com/yansunda/p/18634254

相关文章

  • Kubernetes 为什么减少对 Docker 的依赖:容器运行时演进背后的技术考量
    1、概述在当今的技术领域,容器技术的崛起与发展离不开Docker和Kubernetes的紧密合作。Docker以其创新性的容器化技术,推动了容器在全球范围内的广泛应用,为开发者提供了从容器镜像构建、容器启动与管理到镜像分发等一站式服务。Kubernetes则专注于大规模容器的编排和自动......
  • Kubernetes对象-命名空间
    Kubernetes对象-命名空间Kubernetes命名空间何时使用多个命名空间初始命名空间使用命名空间查看命名空间设置请求的命名空间设置命名空间首选项命名空间和DNS不是所有对象都位于命名空间中自动打标签链接Kubernetes命名空间在Kubernetes中,命名空间提供了一种隔......
  • Kubernetes 为什么减少对 Docker 的依赖:容器运行时演进背后的技术考量
    引言容器技术的发展离不开Docker和Kubernetes的深度合作。Docker推动了容器化技术的普及,而Kubernetes则为大规模容器编排和自动化管理提供了强有力的支持。然而,随着Kubernetes逐步发展,尤其是在容器运行时(ContainerRuntime)方面的需求发生变化,Kubernetes在1.20版本中......
  • 读书笔记:Kubernetes设计模式
    Kubernetes设计模式,BilginIbryam,RolandHuB著前言.3使用代码示例本书主页:https://k8spatterns.io/Github:https://github.com/k8spatterns/第1章引言131.1云原生之路.131.2分布式原语.15概念本地原语分布式原语行为封装类容器镜像行为实例对......
  • Kubernetes应用编排控制器
    1.Kubernetes控制器模式1.1声明式APIAPI设计方法命令式API也称为指令式API,用户需要一步步地告诉机器该如何做(How),机器自身不具有任何“智能”,只被动接受指令高度依赖用户自身理解和达成目标的能力和处理各类异常问题的经验,实现的是“命令式编程(ImperativeProgramming)”......
  • Kubernetes 的架构和核心概念
    Kurbernetes是Google旗下的容器跨主机编排工具。Kurbernetes可以自动化应用容器的部署、扩展和操作,提供以容器为中心的基础架构。一、Kurbernetes集群架构与组件Kubernetes采用主从分布式架构,节点在角色上分为Maste和Node。KubernetesMaster是控制节......
  • docker+kubernetes
    Docker docker 可以在阿里云仓库拉取,需要配置daemon.json dockersearchjava 全文搜索java相关镜像dockerpulljava:8 不输入版本号拉去latest最新版本查询下载dockerimages 看镜像仓库有哪些镜像软件查看具体软件镜像  dockerrun-d-p91:80nginx:......
  • 服务网格的基本概念
    本文分享自天翼云开发者社区《服务网格的基本概念》,作者:cate服务网格(ServiceMesh)由服务治理创建并托管Istio的控制平面。具备简单、低成本、高可用、无需运维管理Istio控制平面的特点。SidecarSidecar模式是一种单节点、多容器的应用设计形式。Sidecar主张以额外的容器来扩展......
  • Kubernetes Gateway API
    KubernetesGatewayAPIGatewayAPI是Kubernetes1.19版本引入的一种新的API规范,会成为Ingress的下一代替代方案。主要原因是Ingress资源对象不能很好的满足网络需求,很多场景下Ingress控制器都需要通过定义annotations或者crd来进行功能扩展,这对于使用标准和支持......
  • Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
    在现代软件开发中,容器化技术已成为提升应用部署和管理效率的关键工具。Java应用由于其庞大的依赖性和较大的体积,常常在传统环境下部署存在挑战。幸运的是,Docker和Kubernetes的出现为Java应用的开发、部署和管理带来了极大的便利。本文将介绍如何通过Docker和Kubernetes优化Java......