k8s介绍
介绍
k8s 使用go语言开发 谷歌开源的一个容器集群管理系统,borg衍生出来,主要用于自动化部署,扩展和管理容器应用,提供资源调度,部署管理 服务发现 扩容缩容 监控等
主要功能
- 数据卷 pod之间共享数据,可以使用数据卷
- 应用程序健康检查 容器内服务 设置监控策略
- 复制应用程序实例 pod副本数量
- 弹性伸缩 根据设定的指标如cpu利用率 自动缩放pod副本
- 服务发现 使用环境变量或dns 保证容器程序自动发现
- 负载均衡 一组pod副本分配一个私有集群ip 负载均衡转发请求到后台容器
- 滚动更新 更新服务不中断 一次更新一个pod 而不是所有 服务编排 通过文件描述部署服务 使得应用程序部署更高效 资源监控
node节点组件集成cadvisor资源收集工具 通过heapster汇总,存储到influxdb 由 grafana展示 提供认证和授权 支持角色访问控制rbac
基本对象
- Pod 是最小单元 一个pod由一个或多个容器组成 pod 共享存储和网络,运行于同一台主机
- Service 一个应用服务抽象, 通过Lable Selector选择一组Pod提供服务
- Volume 数据卷 共享pod中容器使用的数据
- Namespace 将对象逻辑上分配不同namespace 可以是不同项目 用户等区分管理 设定控制策略 实现多租户
- Lable 标签用于区分对象 如 Pod Service
基于对象更高层的抽象
- ReplicaSet 保证pod的副本数量
- Deployment 管理ReplicaSets和Pod StatefulSet 适合持久性的应用程序 有唯一的网络标示符 持久存储,有序的部署扩展删除
- DaemonSet 却表所有节点运行同一个pod
- Job 一次性任务,运行完成后Pod销毁 不再重新启动新容器,
Master组件 kube-apiserver 集群统一入口
- kube-controller-manager 处理集群中后台任务
- kube-scheduler 调度为新建的Pod选择一个Node节点
Node组件 - kubelet 管理本机运行容器的生命周期
- kube-proxy 在node节点上实现pod网络代理 维护网络和四层负载
- docker 运行容器
第三方服务 - Etcd 分布式键值存储
k8s介绍
http://www.jcwit.com/article/107/