Kubernetes(k8s)概念介绍
1. k8s概述和特性
K8s是一个开源的用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署,规划,更新,维护的一种机制。k8s是google在2014年开源的容器化集群部署管理系统,使用k8s可以进行容器化应用部署,它有利于应用扩展,k8s目标实施让部署容器化应用更加简洁和高效
k8s特性
- 自动装箱:基于容器对应用环境的资源配置要求自动部署应用容器(不需要手动干预)
- 自我修复:当容器失败时,会对容器进行重启。当所部署的Node节点有问题时,会对容器进行重新部署和重新调度,当容器未通过监控检查是,会关闭此容器直到容器正常运行时,才会对外提供服务
- 水平扩展:通过简单的命令、用户UI界面、或基于CPU等资源使用情况,对容器进行规模扩大或规模剪裁
- 服务发现:用户不需要使用额外的服务发现机制,就能给予k8s自身能力实现服务发现和负载均衡
- 滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量更新
- 版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
- 密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署
- 存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
- 批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景
2. k8s架构组件
k8s集群架构
- 组成部分:master(主控节点)和node(工作节点)
- master节点:k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成 -
- API server:集群对外统一的入口,以Restfull提供操作,会把各种操作交给etcd存储,提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd,是资源配额控制的入口
-
- sheduler:用于节点的调度,选择一个node节点来进行应用的部署
-
- controller- manager:去处理集群中常规后台任务,一个资源对应一个控制器(例如订单操作就会对应一个订单业务的控制器)
-
- etcd:存储系统,用于保存集群中的相关数据
- node节点:集群工作节点,运行用户业务应用容器
-
- kubelet:master派到node节点中的代表,管理当前节点中的容器,管理本机容器的各种操作,比如容器生命周期,容器创建,销毁等等
-
- kube-proxy:提供网络代理,用它可以实现负载均衡功能
3. k8s核心概念
Pod: 是k8s中最小的部署单元,一个pod是一组容器的集合,一个pod中的容器是共享网络的,pod的生命周期是短暂的,服务器重启会创建新的pod
controller:控制器可以确保pod副本数量,确保所有的node都运行同一个pod,它还支持一次性任何和定时任务
service:定义一组pod的访问规则,好比订单和购物车,Service根据pod负载能力等规则转发到不同的pod进行处理。