目录
一、简介
Kubernetes 是一个开源的容器编排系统,用于自动化应用容器的部署、扩展和管理。它是Google基于Borg系统(Google的内部运行系统)的经验并贡献给 Cloud Native Computing Foundation(CNCF)的项目。Kubernetes 中间有8个字母,所以也被称为 K8s。
K8s 有如下的特性
- 服务发现和负载均衡:K8s 可以使用 DNS 名称或自己的 IP 地址暴露容器,如果到一个容器的流量过大,K8s 能够负载均衡并分配网络流量,以保证服务稳定。
- 自动部署和回滚:你可以描述已部署的容器应有的状态,它可以改变实际状态到期望状态。
- 自我修复:当容器失败时,K8s 会重启它;当节点失败时,K8s 会重新调度在该节点上的应用到其他节点上;当容器没有响应健康检查时,K8s 会杀掉它并且把它标记为失败的。
K8s 介于应用服务和服务器之间,能够通过策略,协调和管理多个应用服务,只需要一个 yaml 文件位置,定义应用的部署顺序等信息,就能自动部署应用到各个服务器上,还能让它们挂了自动重启,自动扩缩容。
二、Kubernetes 架构原理
K8s 会将我们的服务器划分成两部分,一部分为控制平面,另一部分为工作节点,也就是 Node。控制平面控制和管理各个 Node,而 Node 则负责实际运行各个应用服务。
2.1 控制平面
控制平面内部组件
- 以前操作服务器时需要登录每台服务器,然后手动执行各种命令,现在有了 K8s 一切都变得简单了,K8s 提供了 API 接口,然后通过 API server 接口组件就能操作这些服务资源。
- 以前部署服务时,需要查看哪台服务器的资源充足,然后才能将应用部署到相应的服务器上,现在 K8s 提供了