概念
什么是k8s
- 一组服务器集群
- 管理集群中各个节点的容器(最小单位是pod)
功能
- 自我修复
- 弹性伸缩: 根据服务器实际情况增加或减少容器数量
- 自动部署: 一键部署LAMP
- 回滚:
- 服务发现和负载均衡
- 机密和配置共享管理
k8s集群分为两类节点
- Master node: 主节点,不跑服务
- Worker node: 实际工作节点
Master节点的组件
- apiserver 接口服务,接收客户端操作k8s的指令
- scheduler 资源调度,从多个work node节点中选取一个来启动服务
- controller Manager 控制器,向work node 的 kubelet 发送指令
Node节点组件
- kubelet: 向Docker发送指令,管理Docker容器
- kubeproxy: 管理Docker容器的网络
etcd数据库
- k8s的数据库:用来注册节点、服务、域名解析等等
pod
- 最小部署单元(虚拟机)
- 一组容器的集合
- 一个pod中的容器共享网络命名空间
- pod是短暂的
Controllers(控制pod 启动、停止、删除)
- ReplicaSet: 确保预期的pod副本的数量
- Deployment: 无状态应用部署
- StatefulSet: 有状态应用部署
- DaemonSet: 确保所有node运行同一个pod
- Job: 一次性任务
- Cronjob: 定时任务
Service
- 将一组pod关联起来,提供统一入口,即使pod地址发生改变统一入口也不会变化,可以保证用户继续访问,防止pod失联
- 定义一组pod的访问策略
Label
- 标签 附加到某个资源上,用于关联对象的查询和筛选
- 一组pod是一个统一的标签
- service是通过标签和一组pod进行关联的
Namespace
- 命名空间,将对象逻辑上隔离,默认情况下pod是可以互相访问的
- 为开发环境、测试环境、生产环境进行隔离