前言
在校期间的开发很少接触关于应用部署方面的知识,如今了解到云原生才发现这关面的知识自己仍停留在“原始时代”。由于对该方面比较有兴趣,特记下相关学习笔记。
一、云原生的发展
了解技术的产生可以对其有更深的理解,这里可以从应用部署的运行模式的变迁来了解云原生技术的出现与发展。
~2000年:物理单机
2010~2009:虚拟化初期
2010~至今:虚拟化成熟期
2013~至今:容器化
2015~至今:云原生
即: 传统部署 --> 虚拟化部署 --> 容器部署
原文链接:具体详情
二、kubernetes是什么
- 容器编排管理平台:提供容器管理、健康检查、自愈和升级等。
- 微服务支撑平台:支持服务发现、部署、自动负载均衡等。
- 可移植的“云平台”:支持“云迁移”
三、kubernetes架构和组件
原文链接:具体详情
一般情况下,k8s集群由Master节点和Node节点。所有节点都存在node组件(kubelet、kube-proxy和pod)。master节点还存在master组件(api-server、scheduler、controller manager和etcd)。
1. master组件
属于集群控制节点,负责整个集群的管理和控制,由api-server、scheduler、controller manager和etcd组成。
api-server: 集群内各个组件之间的数据交互通信中枢。提供集群控制和安全机制。
scheduler:通过api-server的watch接口监听新建pod副本信息,并通过调度算法为其选择一个最合适的Node节点。调度算法支持自定义。
controller manage:资源controller的核心管理者,每一种资源都有相应的Controller,保证管理的每个Controller所对应的资源始终处于期望状态。
etcd:k8s集群的主数据库,存储所有资源对象及其状态。数据变更通过api-server进行。
2. node组件
属于工作负载节点,由kubelet、kube-proxy和pod组成。
kubelet:处理master下发到本node上的pod创建和启停等管理任务。向api-server注册Node信息。并定期向Master汇报节点资源占用情况。
kube-proxy:是service抽象概念的实现,将到service的请求按(负载均衡)策略算法通过endpoint分发到后端pod上。支持nodeport模式,实现从外部访问集群内的service。
pod:是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元,1个pod可以包含1个或多个容器。