第二章 深入kubernetes核心组件原理

第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. 无状态服务

* 没有 实时 的数据需要存储.

* 无状态服务集群中, 把某一个服务抽离出去, 一段时间后再加入机器网络, 对集群服务没有任何影响.

滚动至顶部