一、K8s的前世今生
Kubernetes单词起源于希腊语, 是“舵手”或者“领航员、飞行员”的意思。
Kubernetes(简称K8s)的前世今生可以追溯到谷歌(Google)内部的一个项目,它起源于2003年,当时谷歌正面临着不断增长的应用程序和服务的管理挑战。这个项目最初被称为”Borg”,是一个早期的容器编排系统。Borg 的成功经验成为 Kubernetes 开发的契机。
Borg 的诞生:
谷歌的工程师们在面对大规模、分布式、可扩展应用的挑战时,创建了 Borg 系统,用于管理和运行谷歌的内部服务和应用。Borg 采用了容器化的思想,将应用程序打包成容器并在集群中运行。
Omega 的演进:
Borg 的经验在谷歌内部得到了积累和总结。在 Borg 的基础上,谷歌发展出了 Omega 系统,这是 Borg 的下一代版本,继续探索分布式系统管理的更高级别的抽象。
Kubernetes 的诞生:
2014年,Google 将 Borg 的一部分经验开源,推出了 Kubernetes 项目。Kubernetes 最初是由 Google、Red Hat、Microsoft 等公司共同推动的,旨在为云原生应用提供一个开源的容器编排和管理平台。可以说,k8s是站在Borg这个巨人的肩膀上而开发出的容器编排管理系统
推出后,Kubernetes 很快得到了开源社区的广泛关注和参与。云服务提供商、软件公司以及大量的开发者纷纷加入到 Kubernetes 的开发和维护中,形成了庞大的开源社区。
k8s的发展历程可以简单概括为以下几个阶段:
1. 初始阶段(2014年-2015年):
起源于 Google Borg: Kubernetes 的最初设计灵感来自于谷歌内部的 Borg 系统,这是一个用于管理谷歌大规模分布式应用的容器编排系统。
开源发布: Kubernetes 项目于2014年由 Google 公开发布,并吸引了早期的贡献者和用户。
2. 社区发展和CNCF托管(2015年-2017年):
成为CNCF项目: 2015年,Kubernetes 成为云原生计算基金会(CNCF)的旗舰项目,进一步推动了其开源社区的发展。
生态系统的繁荣: Kubernetes 生态系统开始迅速增长,涌现出许多相关工具、项目和解决方案,形成了一个庞大而活跃的云原生生态。
3. 驱动创新和企业应用(2018年-2020年):
版本迭代: Kubernetes 不断推出新的版本,引入新功能和改进,以满足不断增长的用户需求和新兴技术的挑战。
广泛应用于生产环境: Kubernetes 在企业中得到了广泛应用,成为构建和运行云原生应用的标准平台。许多大型组织和云服务提供商都采用了 Kubernetes。
持续推动云原生发展: Kubernetes 的成功促使了整个云原生生态系统的发展,包括容器编排、微服务、服务网格、持续交付等方面的创新。
4. 多云和混合云时代(2020年-至今):
多云支持: Kubernetes 支持多云和混合云部署,使得用户可以在不同的云服务提供商之间轻松迁移和管理应用。
云原生安全: 安全性成为云原生领域的关键问题,Kubernetes 不断加强安全特性,以应对不断演进的安全威胁。
K8s发展趋势: Kubernetes 面临着更多的挑战和机遇,包括边缘计算、机器学习和自动化运维等领域,未来发展趋势将受到新技术和用户需求的推动。
Kubernetes 的生命周期经历了从实验性项目到开源社区和企业广泛采用的阶段,它的成功不仅改变了应用开发和部署的方式,也推动了云原生技术的普及和创新。
二、K8s架构
K8s的架构为 Master / Node 模式
K8s集群至少需要一个master节点和一个node节点,master节点为控制节点,负责整个集群的管理与控制,主节点主要用于暴露API、调度任务和管理node节点。而工作节点负责运行各种任务容器。
在高可用的K8s集群中,会包含多个Master节点与Node节点,再通过两地三中心的部署方式,以保证其高可用性,即使部分节点宕机,也不会影响整个集群的正常运行
三、K8s组件、单元
1. Master节点
- kube-apiserver: 提供了 Kubernetes API 的接口,是整个集群的控制中心。
- etcd: 一个分布式键值存储系统,用于存储集群的配置信息、状态和元数据。
- kube-scheduler: 负责监视新创建的 Pod,并将其分配给集群中的节点。
- kube-controller-manager: 包含了一系列控制器,用于管理集群的各种资源,如节点、副本集、服务等。
2. Node节点
- kubelet: 负责维护容器的生命周期,与 Master 节点协作以确保容器按照 Pod 的规格运行。
- kube-proxy: 提供网络代理,并负责为服务提供集群内的网络通信和负载均衡。
3. Pod
最小部署单元,是一个或多个容器的组合,它们共享相同的网络和存储,并在同一主机上运行。
4. Controller
- ReplicaSet: 用于确保指定数量的 Pod 副本正在运行。
- Deployment: 提供声明性的方法,用于在集群中定义和更新应用程序。
5. Service
提供了一种稳定的网络端点,以便在应用程序组件之间创建逻辑连接。Service 可以是 ClusterIP、NodePort 或 LoadBalancer 类型。
6. Volume
用于持久化存储,允许容器之间共享数据,也支持各种存储后端,如本地存储、网络存储、云存储等。
7. Namespace
用于将集群划分为多个虚拟集群,每个 Namespace 提供一个独立的工作空间,避免资源冲突。
四、前景
Kubernetes已经被广泛接受,成为云原生生态系统的核心组件。许多大型企业和组织正在采用Kubernetes作为其容器化应用的标准编排平台。
Kubernetes生态系统不断壮大,支持各种附加工具和服务,如监控、日志记录、安全性、CI/CD等。未来Kubernetes的生态系统将继续扩展,为用户提供更多选择。
Kubernetes将继续朝着更自动化和智能化的方向发展。这包括自动伸缩、自动修复、智能调度等功能的改进,以提高系统的效率和可靠性。
总之,从技术发展趋势和应用需求来看,Kubernetes的发展前景非常广阔。未来几年,我们将看到Kubernetes在自动化、安全性、集成和扩展性等方面取得更大的进步,并在更多行业中得到广泛应用。