WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

Kubernetes 入门

废弃,请参考

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上