第1节 核心组件原理-pod核心原理
概念: K8S作用?
K8S是用来管理容器, 但是不直接操作容器, 最小操作单元是pod.(间接的管理容器)
特点:
1, 一个master有一群node节点与之对应
2, master节点不存储容器, 只负责调度, 网关, 控制器, 资源对象存储.
3, 容器是存储在node节点 ( 容器是存储在pod内部 )
4, pod内部可以有一个容器, 或者是多个容器.
5, kubelet负责本地的pod维护
6, kube-proxy负责负载均衡, 在多个pod之间来做负载均衡.
核心问题: POD是什么?
pod 也是一个容器 ( 这个容器中装的是docker创建的容器, pod用来封装容器的一个容器 ), pod是一个虚拟化分组 ( pod有自己的IP地址, 主机名 ), 相当于一台独立沙箱环境.
核心问题: pod到底用来干什么?
通常情况下, 在服务部署时候, 使用pod来管理一组相关的服务. ( 一个pod中要么部署一个服务, 要么部署一组有关系的服务 )
pod底层:
1, pod内部容器创建之前, 必须先创建pause容器.
2, 服务容器之间访问使用localhost访问, 相当于访问本地服务一样, 性能非常高.
第2节 核心组件原理-ReplicaSet
ReplicaSet副本控制器
* ReplicationController 副本控制器
* ReplicaSet 副本控制
副本控制器基本理解: 控制pod副本 ( 服务集群 ) 的数量, 永远与预期设定的数量保持一致即可.
副本控制器:
当副本设置为3的时候, 副本控制器将会永远保证副本数量为3, 当有pod服务宕机时候, 副本控制器将会立马重新创建一个新的pod, 永远保证副本数量为3.
ReplicaSet & ReplicationController 有什么区别?
1. ReplicaSet
* 单选
* 复合选择
2. ReplicationController
* 单选
在新版的K8S中, 建议使用ReplicaSet作为副本控制器. ReplicationController不再使用了.
第3节 核心组件原理-Deployment
* 服务部署结构模型
* 滚动更新
ReplicaSet副本控制器控制pod副本的数据. 但是: 项目的需求在不断迭代, 不断的更新, 项目版本将会不停的发版, 版本的变化, 如何做到?
部署模型: ReplicaSet不支持滚动更新, Deployment对象支持滚动更新. 通常和ReplicaSet一起使用.
第4节 核心组件原理-Statefulset
— 为了解决有状态服务使用容器化部署的一个问题.
* 部署模型
* 有状态服务
思考: MYSQL使用容器化部署, 存在什么样的问题?
* 容器是生命周期的, 一旦宕机, 数据丢失
* pod部署, pod有生命周期, 数据丢失
总结: K8S来说, 不能使用Deployment部署模型部署有状态服务. 通常情况下, Deployment被用来部署无状态服务, 那么对于有状态服务的部署, 使用StatefulSet进行有状态服务的部署.
状态服务的解释:
1. 有状态服务
* 有 实时 的数据需要存储.
* 有状态服务集群中, 把某一个服务抽离出去, 一段时间后再加入机器网络, 如果集群网络无法使用.
2. 无状态服务
* 没有 实时 的数据需要存储.
* 无状态服务集群中, 把某一个服务抽离出去, 一段时间后再加入机器网络, 对集群服务没有任何影响.