1.1 K8S简介
1、云计算类型:
IAAS→PAAS→SAAS
PAAS代表厂商,如新浪云
传统级虚拟化→容器级虚拟化。
2、资源管理器用来处理容器的集群化问题
资源管理器:
Apache MESOS、Docker Swarm、K8S
K8S特点:轻量级、开源、弹性伸缩、负载均衡。
3、组件
K8S前身是谷歌的borg系统,brog架构如下图:

Master节点需要高可用,节点数量一般为奇数
访问方式:三种
K8S架构如下图:

kubectl:连接工具
master节点
api server:所有服务的统一访问入口
scheduler:调度器(接受任务,选择合适节点分配)
controller manager:控制器(维护期望值)
etcd:键值对数据库(存储K8S集群所有重要数据(持久化)
K8S的1.11版本之后etcd默认是v3版
node节点
kublet:直接和容器引擎交互,实现容器的生命周期管理
kube proxy:写入规则至iptables或ipvs实现服务映射访问
container runtime interface:镜像运行为容器
4、插件
coredns:为集群中的svc创建域名和IP的解析记录
dashboard:提供K8S的BS访问
ingress:可以实现7层代理
Prometheus:监控
elk:日志统一分析接入平台
1.2 基础概念
1、pod概念
一个pod多个容器,每个pod中都有一个pause容器,pod中其他容器共用网络栈和存储卷。面试题!!!
k8s中pod是管理最小单元。
同一个pod中容器的端口不能冲突。
2、pod分类
- 自主式pod(不被控制器管理的)
死亡不会被拉起来
- 控制器管理的pod
死亡会被重新拉起
3、控制器
-
RC,官方建议使用RS
-
RS,支持集合式的selector
-
Deployment,支持滚动更新
创建出来一个Deployment,会自动创建一个RS。
当更新时候会在创建一个新的RS,进行滚动更新,当完全更新后,停用旧的RS,使用新的RS。
当回滚时,旧的RS再逐步代替当前RS。
-
HPA 监听pod资源利用率,进行水平扩容(2-10)
-
StatefulSet 解决有状态服务的问题
-
DaemonSet
-
Job和CronJob 批处理任务
4、服务发现
service→pods


5、网络通讯方式
扁平的网络空间实现pod和pod间直接通信
-
同一个pod内的容器: lo
-
pod与pod间: overlay network
-
pod与service: iptables规则
flannel

flannel和etcd的关系
8