废弃,请参考
Kubernetes(K8s) 简介
Kubernetes 是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。
和Linux的一切都是文件的思想相仿,Kubernetes的核心思想就是一切都是资源。
K8s 常用资源
Pod
- Pod 是 K8s 中的最小对象,并不是 container,所以IP等资源也是分配给 Pod
- Pod 中可以运行一个或多个 container
- 同一个 Pod 中的 container 可以共享资源,例如存储、网络等
- 同一个 Pod 中的 container 可以直接通过 localhost 访问另一个容器(通过每个Pod中运行的网络基础container实现的)
- 每一个Pod都有一组 key/value 组成的 label key的命名规范是prefix/name
- K8s 通过 label selector 进行 Pod 的筛选,管理。
Replication Controller
- 记录Pod的状态 Pending,Runing 等等
- 通过值相等的 label selector 确定Pod集合,并维持Pod的副本数量正确
- 并不负责调度Pod、或者检查Pod是否和Replication Controller 中声明的模板一致
- 其下一代版本是Replica Set,在label选择器上多出了基于子集的查询能力
Service
- Service具有唯一的IP地址,且始终不会发生变化
- 建立Pod和Pod的IP地址的映射,实际上更应该称其为一种路由
- 为Pod做负载均衡
- Service的服务发现机制有环境变量和DNS两种,其中环境变量需要先创建Service,在创建Pod,没有DNS使用方便。
Deployment
- 多用于为Pod和Replica set提供更新,支持更改模板的方式,升级Pod,因此更多用于版本迭代的功能(包括升级,暂停升级,回滚等)
DaemonSet
- 负责所有的主机节点上运行一套用于监控主机节点的Pod
- 支持在只某些节点上进行部署
- 暂时不支持更新服务
ConfigMap
- 将生产环境中的应用配置(例如:config文件、命令行参数,环境变量等)分离出来,保证镜像的可移植性和配置信息安全
- K8s 提供了脚本,将文件中的配置信息,自动生成为配置文件
Job
- 为批量任务运行而生,可以设置并行执行的Pod数量,有多少Pod执行成功就认为Job执行成功的参数
Horizontal Pod Autoscaler
- 自动化扩增和收缩
K8s 系统组成
K8s是中心化架构,主要有master(管理节点)和slave(工作节点)。
master
控制节点上运行了3个重要的组件
- APIServer负责响应用户的管理请求,进行指挥协调等工作
- Scheduler将待调度的Pod绑定到合适的工作节点上
- Controller Manager是一组控制器合集,负责控制管理对应的资源,如replication、service和node等
slave
工作节点上运行了两个主要的组件
kubelet
负责管理和维护节点上的所有容器kube-proxy
负责将service的流量转发到对应的endpoint上