文章目录
Kubernetes 容器编排系统
背景与发展
更高级的容器编排工具:
工具名称 | 描述 | 所属公司/组织 |
---|---|---|
docker-swarm | Docker旗下的容器跨主机编排工具,是实现在多机上Docker容器及其管理调度的工具 | Docker |
mesos + marathon | mesos:分布式资源管理框架,可以对集群中的多台主机的硬件资源进行统一调度和管理 marathon:mesos的容器编排框架,用来调度和运行容器服务 |
Apache |
kubernetes | Google旗下的容器跨主机编排工具,已经成为当前容器编排工具的事实标准 |
物理机时代
物理机存在诸多局限,如部署慢、成本高、资源浪费以及扩展和迁移困难。每台物理服务器需要单独安装操作系统和应用程序环境,配置繁琐且硬件资源利用率低。
虚拟机时代
虚拟机(如VMware)通过虚拟化技术解决了物理机的部分问题。虚拟机可以在物理机上快速部署,实现资源池化,提高资源利用率,并通过资源隔离确保虚拟机之间的独立性。然而,虚拟机仍需安装完整的操作系统,导致资源消耗较大。
容器化时代
容器化技术(如Docker)进一步解决了虚拟机的缺点。容器共享主机操作系统内核,无需安装完整的操作系统,从而实现了更高效的资源利用。容器具有一致的运行环境,启动速度快,且镜像体积小,便于分发和管理。然而,单机上的容器编排存在诸多挑战,如节点管理、负载均衡、自动化运维等。
Kubernetes 基本概念
全称与缩写
全称为 Kubernetes (K12345678S)(简称K8s)是一个用于自动部署、扩展和管理容器化应用程序的开源系统。K8s的名字来源于希腊语的舵手或飞行员,寓意着它作为容器集群的“领航者”。
由来与发展
K8s起源于Google的Borg系统(博格系统,google内部使用的大规模容器编排工具),后经GO语言重写并捐献给云原生计算基金会(CNCF)开源。随着容器的广泛使用,K8s已成为容器编排工具的事实标准。
作用与特点
K8s是一个生态极其丰富的容器编排框架工具,负责自动化运维管理多个容器化程序。它提供了自动化管理、弹性伸缩、高可用性、负载均衡和跨平台支持等特点,大大提高了应用部署和管理的效率。
Kubernetes 集群架构与组件
主从设备模型
K8s采用主从设备模型(Master-Slave架构),其中Master节点负责集群的调度、管理和运维,而Worker Node节点则负责运行工作负载。
Master组件
- API Server:集群的统一入口,负责处理RESTful API请求。
- Scheduler:负责根据调度算法将Pod调度到合适的Node上。
- Controller Manager:负责集群内各种资源的自动化管理,如ReplicaSet、Deployment等。
- etcd:一个高可用的分布式键值数据库,用于存储集群的配置信息和状态。
Worker Node组件
- kubelet:Node的代理,负责监听API Server的指令并执行相应的操作。
- kube-proxy:实现Service的负