kubernetes学习(一)之基本概念

1、kubernetes定义

  • kubernetes本质上就是一组服务器集群,kubernetes可以在集群的各个节点上运行特定的docker容器
  • kubernetes是Google在2014年开源的一个容器集群管理系统
  • kubernetes简称K8S
  • K8S用于容器化应用程序的部署、扩展和管理
  • K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能
  • K8S目标是让部署容器化应用简单高效

2、kubernetes特性

  • 自我修复
  • 弹性伸缩,实时根据服务器的并发情况,增加或所见容器数量
  • 自动部署 根据yaml文件自动部署。
  • 回滚
  • 服务发现和负载均衡
  • 机密和配置共享管理
  • 存储编排
  • 批处理

3、kubernetes集群架构及组件

kubernetes学习(一)之基本概念
K8S集群分为两类节点:
master node:主 负责管理调度
master节点组件:

  • APIServer 集群的统一入口,各组件协调者,以Restful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储
  • Scheduler 根据调度算法为新创建的pod选择一个NODE节点,可以任意部署在同一个节点上,也可以部署在不同的节点上
  • Controller Manager 处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的

worker node:工作 负责业务执行
node节点组件:

  • Kubelet kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、POD挂载数据卷,下载secret,获取容器和节点状态等工作,kubelet将pod转换成一组容器
  • Kubeproxy 在node节点上实现pod网络代理,维护网络规则和四层负载均衡工作

etcd节点组件

  • Etcd 分布式键值存储系统,用于保存集群状态数据,比如pod,service等对象信息

k8s工作原理:
kubectl向api server发送用户指令,比如启动nginx
api server到etcd做用户鉴权认证及权限认证
认证成功后,api server向scheduler发送指令,scheduler通过etcd(同样是通过api server到etcd查找)查找合适的worker node
etcd向scheduler发送每个节点的相关信息,如ip。
scheduler通过算法找到合适的worker节点,并把ip返回给api server
apiserver得到ip后,向controller-manager发送指令
controller-manager找到对应的节点,并向该节点的kubelet发送启动指令
kubelet向该节点上的pod发送指令来启动具体的nginx容器
如果该nginx要和外网互通,kube-proxy就会分配ip和代理

4、kubernetes核心概念

  1. Pod
  • 最小部署单元
  • 一组容器的集合
  • 一个POD中的容器共享网络命名空间
  • pod是短暂的
  1. Controllers
  • ReplicaSet:确保预期的pod副本数量
  • Deployment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DameonSet:确保所有Node运行同一个pod
  • Job:一次性任务
  • Cronjob:定时任务
  1. Service
  • 将一组pod关联起来,提供一个统一的入口
  • 即时pod地址发生变化,这个统一入口也不会发生变化,可以保证用户访问不受影响
  1. Label
  • 一组pod是一个统一的标签
  • Service通过标签和一组pod进行关联
  1. NameSpace
  • 用来隔离pod的运行环境(默认情况下,pod是可以互相访问)
  • 为不同的公司提供隔离的pod运行环境
  • 为开发环境、测试环境、生产环境分别准备不同的命名空间进行业务隔离