1.k8s简介
- kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。
- k8s是一个开源 的,用于管理云平台中多个主机上的容器化的应用,
- k8s的目标是让部署容器化的 应用简单并且高效(powerful),
- k8s提供了应用部署,规划,更新,维护的一种 机制。
- k8s是谷歌在2014年开发的容器化集群管理系统
2.k8s功能
(1)自动装箱 基于容器对应用运行环境的资源配置要求自动部署应用容器 (2)自我修复(自愈能力) 当容器失败时,会对容器进行重启 当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务  如果某个服务器上的应用不响应了,Kubernetes会自动在其它的地方创建一个
(3)水平扩展 通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大 或规模剪裁 当应用过于忙碌时,k8s会水平扩展一个应用 
(3)服务发现 用户不需使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和 负载均衡 对外提供统一的接口,用来做节点调度和负载均衡 
(4)滚动更新 可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
添加应用的时候,不是加进去就马上可以进行使用,而是需要判断这个添加进去的应用是否能够正常使用 (5)版本回退 可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退 (6)密钥和配置管理 在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。 (7)存储编排 自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要 存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务 (8)批处理 提供一次性任务,定时任务;满足批量数据处理和分析的场景
3.k8s架构组件
K8S架构主要包含两部分:Master(主控节点)和 node(工作节点) 1.master组件
k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求; Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成
- API server
集群统一入口,以restful的方式,交给etcd存储 提供认证、授权、访问控制、API注册和发现等机制 -scheduler 节点调度,选择node节点应用部署 - controller-manager
处理集群中常规后台任务,一个资源对应一个控制器 - etcd
存储系统,用于保存集群相关的数据 - 容器运行环境
负责运行容器的软件 Kubernetes支持多个容器运行环境:Docker、containerd、cri-o、rktlet以及任何实现Kubernetes CRI (容器运行环境接口) 的软件。 - fluentd:是一个守护进程,它有助于提升 集群层面日志
master节点架构图 
2.node组件
集群工作节点,运行用户业务应用容器; Worker Node 包含 kubelet、kube proxy 和 ContainerRuntime;
- kube let
master派到node节点代表,管理本机容器 - kube-proxy
提供网络代理,负载均衡等操作
整体架构图如下  
3.K8S核心概念
1.pod
- Pod是K8s中最小的单元
- 一组容器的集合
- 共享网络【一个Pod中的所有容器共享同一网络】
- 生命周期是短暂的(服务器重启或者重新部署后,就找不到了)
2.Controller
- 确保预期的pod副本数量【ReplicaSet】
- 无状态应用部署【Deployment】;无状态就是指,不需要依赖于网络或者ip
- 有状态应用部署【StatefulSet】;有状态需要特定的条件,确保所有的node运行同一个pod 【DaemonSet】
- 一次性任务和定时任务【Job和CronJob】
3.Service
- 定义一组pod的访问规则
- Pod的负载均衡,提供一个或多个Pod的稳定访问地址
支持多种方式【ClusterIP、NodePort、LoadBalancer】
K8S通过service统一入口访问,由Controller创建Pod进行部署 
4.Deployment
- 定义一组Pod副本数目,版本等
- 通过控制器【Controller】维持Pod数目【自动回复失败的Pod】
- 通过控制器以指定的策略控制版本【滚动升级、回滚等】
|