K8S 概述

Administrator
Administrator
发布于 2024-01-24 / 18 阅读
0
0

K8S 概述

一、概述

Kubernetes(通常缩写为K8s)是一个开源的容器编排平台,旨在自动化部署、扩展和管理容器化应用程序。最初由Google设计并捐赠给Cloud Native Computing Foundation(CNCF),它现在是云原生生态系统中最受欢迎的容器编排工具

二、Kubernetes核心功能:

  • 自动化容器部署和回滚:Kubernetes 允许用户声明式地定义容器应用的状态,自动化地部署和更新应用程序,并在更新不如预期时自动回滚到之前的状态

  • 服务发现和负载均衡:Kubernetes 可以自动分配IP地址和DNS名称给容器,并在容器组之间实现负载均衡。

  • 存储编排:自动挂载所选的存储系统,无论是本地存储、公有云提供商的存储服务,还是网络文件系统。

  • 自动化容器排版:根据资源需求和约束条件,自动选择合适的主机以运行容器

  • 自我修复:自动替换或重启失败的容器,杀死不响应用户定义的健康检查的容器,并且不向它们分发流量直到它们准备就绪

  • 横向扩展:基于CPU使用率或其他选定的指标自动扩展或缩减应用副本数量

  • 安全和访问控制:提供细粒度的访问控制机制,包括用户认证、授权和秘密管理

三、Kubernetes架构组件:

  • 控制平面(Control Plane):控制平面的组件负责集群决策,比如调度和响应集群事件(如当节点失效时启动新的副本)

  • 节点(Nodes):节点可能是一个虚拟机或物理机,它们是运行应用程序容器的工作机器

四、Kubernetes 基础组件

(一)主节点(Master Node)组件:

  1. API服务器(kube-apiserver):

  • 提供Kubernetes API的终端,是所有控制面组件的入口

  • 处理API请求,执行操作,并更新etcd中的数据

  1. 控制器管理器(kube-controller-manager):

  • 监控集群中的控制器,确保实际状态与期望状态一致

  • 包括Node Controller、Replication Controller、Endpoint Controller等

  1. 调度器(kube-scheduler):

  • 负责将Pod调度到可用的工作节点上

  • 考虑资源需求、亲和性、反亲和性等因素进行智能调度

  1. etcd:

  • 是一个分布式键值存储系统,用于保存整个集群的配置数据和状态

  • 存储了所有的集群数据,包括节点信息、Pod状态、服务信息等

(二)工作节点(Node)组件:

  1. Kubelet:

  • 运行在每个工作节点上,负责与主节点通信

  • 管理节点上的容器,确保它们按照Pod的规格运行

  1. Kube-Proxy:

  • 负责维护节点上的网络规则,处理Pod之间的网络通信

  • 提供服务的负载均衡,使得服务可以通过统一的IP地址和端口进行访问

  1. 容器运行时(Container Runtime):

  • 负责在节点上运行容器,与Kubelet进行通信

  • 常见的容器运行时包括Docker、containerd、cri-o等

Kubernetes生态系统:

Kubernetes周围有一个庞大且不断增长的生态系统,包括各种支持工具和服务,这些工具和服务可以帮助用户更容易地部署、运行和管理Kubernetes集群。这包括网络插件、存储解决方案、CI/CD工具、监控和日志服务等

Kubernetes的设计目标之一是跨不同的环境中保持应用的便携性,包括公有云、私有云和混合云。这使得它成为企业和开发人员构建、部署和管理现代应用程序的理想选择


评论