Kubernetes基础概念

什么是Kubernetes

  • 简称k8s(中间有8个字母),是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、扩缩和管理。
  • 目前官方最新版本(截至当前时间2023-11-30):V1.28
  • 官方网址:https://kubernetes.io

Kubernetes与Docker Compose的区别

  • Docker Compose适用于单机或简单的多容器应用程序的部署和管理。
  • Kubernetes适用于复杂的集群分布式应用程序的自动化部署和管理,具有自动容器调度、负载均衡、自动扩展和自愈能力等特性。

Kubernetes架构

  • Control Plane(控制面板,Master节点)用于调度和管理集群,Data Plane(数据面板,即工作节点,Node节点)
  • k8s操作的最小单元pod(容器组)
  • pod(容器组)包含多个容器,基于CRI调用具体的容器引擎安装容器
  • CRI(容器运行时接口)是一套规范接口,需要由具体的容器引擎去实现,k8s通过这套接口去操控容器引擎
  • kube-apiserver:提供Kubernetes API服务,是集群的前端接口。
  • etcd:分布式键值存储,用于存储集群的配置数据、状态信息和元数据。各个组件通过etcd共享和同步集群的状态信息,确保集群的一致性和可靠性。
  • kube-scheduler:负责根据Pod的资源需求和调度策略,将Pod调度到集群中的合适节点上。它通过与kube-apiserver和etcd交互,选择最佳的节点来部署Pod。
  • kube-controller-manager:运行控制器,负责集群中各种资源的控制循环。包含多个控制器,负责监控集群中的各种资源对象(如Pod、Service、ReplicaSet等),并根据集群的期望状态来调节实际状态,确保集群中的资源对象处于预期的状态。
  • kubelet:运行在每个节点上的代理,负责管理节点上的Pod和容器。它通过与kube-apiserver和etcd交互,接收Pod的调度信息并确保Pod按照期望状态运行。
  • kube-proxy:负责为Service提供网络代理和负载均衡功能。

Kubernetes资源类型

  1. Pod(容器组):最小的可部署单元,用于托管一个或多个容器,并提供共享的网络和存储环境。
  2. Deployment(部署):用于定义和管理Pod副本的资源对象,提供滚动更新和回滚功能。
  3. Service(服务):用于公开Pod的网络访问,提供稳定的网络终结点并进行负载均衡。
  4. Namespace(命名空间):用于在集群中对资源进行逻辑隔离,控制资源的访问权限和配额。
  5. Volume(卷):用于在Pod中持久化存储数据,可以在多个容器之间共享数据。
  6. ConfigMap(配置映射):用于存储配置数据,将配置信息注入到应用程序中。
  7. Secret(密钥):用于存储敏感数据,安全地管理和传递敏感信息。
  8. Node(节点):集群中的工作节点,用于运行Pod。
  9. Cluster(集群):由多个节点组成的Kubernetes环境,包括控制平面和工作节点。
  10. Ingress(入口):用于公开集群中服务的HTTP和HTTPS路由。
  11. StatefulSet(有状态副本集):用于管理有状态应用程序的部署,提供稳定的、唯一的网络标识和持久化存储。
  12. DaemonSet(守护进程集):确保集群中的每个节点运行一个副本的Pod,常用于运行日志收集器、监控等服务。
  13. Job(作业):用于一次性任务的管理,确保任务成功完成后自动终止。
  14. CronJob(定时作业):用于周期性执行任务,类似于Linux中的cron任务。
  15. PersistentVolume(持久化卷):用于抽象存储设备,独立于Pod的生命周期,可以由集群管理员静态地提供。
  16. PersistentVolumeClaim(持久化卷声明):用于声明对持久化卷的需求,供Pod使用,使得Pod可以独立于底层存储技术。
  17. ......

Kubernetes集群核心三大组件

  • kubeadm
    用于初始化和管理Kubernetes集群的命令行工具,它负责设置主节点和加入其他节点。
  • kubelet
    是每个节点上的主要Kubernetes代理,负责管理容器的生命周期、监控和报告节点状态等。
  • kubectl
    Kubernetes的命令行工具,用于与集群进行交互,例如创建、删除和管理资源。

Kubernetes可视化管理工具

  • Kubernetes Dashboard:官方提供的基于Web的管理界面,用于查看和管理集群中的资源(功能比较简单)。
  • Lens:一个开源的跨平台Kubernetes管理工具,提供直观的UI和丰富的功能(缺少Web管理页面,服务端安装需要安装Linux可视化操作平台x-server)。
  • Rancher:一个功能强大的Kubernetes管理平台,提供了丰富的功能和可视化界面(更偏向于专业运维人员)。
  • KubeSphere:是一个开源的多租户容器平台,基于Kubernetes构建,旨在提供企业级的容器管理和服务编排能力。它提供了包括DevOps工具链、多租户管理、应用编排、监控告警等功能,以帮助用户更轻松地构建和管理容器化的应用。

Kubernetes包管理工具Helm

  • 网址:https://helm.sh
  • Helm帮助您管理Kubernetes应用(Helm Chart),即使是最复杂的Kubernetes应用程序,都可以帮助您定义,安装和升级。
  • Helm Chart易于创建、发版、分享和发布。

其它

  • k8s所有的操作描述都是基于yaml文件
  • k8s持久卷资源(Persistent Volume)创建有两种方式:静态制备和动态制备
    • 静态制备:
      在集群中预先创建和配置存储卷,并将其绑定到Pod中。这意味着管理员需要手动创建存储卷,并在Pod配置中指定使用这些存储卷。静态制备适用于对存储需求较为稳定的场景,但需要管理员手动管理存储资源。
    • 动态制备:
      Kubernetes集群根据Pod的需求动态创建和配置存储卷。当Pod请求使用存储卷时,动态制备可以自动创建并绑定存储卷,无需管理员手动介入。这种方式可以更好地适应动态变化的存储需求,提高了集群的灵活性和自动化程度。
posted @ 2023-11-30 18:38  小舟杂笔  阅读(30)  评论(0)    收藏  举报