【K8S】kubernetes基础原理
Kubernets是什么
Kubernetes的缩写为:K8S,这个缩写是因为k和s之间有八个字符的关系。
Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes拥有一个庞大且快速增长的生态系统。Kubernetesd的服务、支持和工具广泛可用
Kubernetes 特点
- 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展: 模块化, 插件化, 可挂载, 可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
- 快速部署应用,快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
Kubernetes的特性
轻量级
- 使用go语言——>>编译型语言,语言级别支持进程管理,不需要人为控制,所以以go开发的资源消耗占用资源小
开源
自我修复
- 控制器控制pod,保证pod可以维持我们所期望的副本数量3
- 在节点故障时“重新启动”失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断
- 对异常状态的容器进行重建(先创建、再删除),目的是保证业务线不中断
弹性伸缩
- 使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务
手动弹性伸缩(针对于pod),当I/O读/写、磁盘、内存的压力(单个pod) > 80% , 修改replicasets :3->4 更新一下nginx.yml
自动:Yml --> 阈值 cpu使用率 > 80% ——》触发扩容pod (CPU使用上限,docker-cgroup k8s ---> 1、limit
伸缩:扩容和缩容
弹性:人为只要指定规则,满足条件时,就会自动触发扩容或缩容的操作
自动部署和回滚
- KBS采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务
服务发现和负载均衡
- 服务发现:服务可以通过自动发现的形式找到它所依赖的服务
- 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡
机密(加密配置)和(普通)配置管理
- 管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用
存储编排(静态、动态)
- 支持外挂存储并对外挂存储资源进行编排,挂载外部存储系统,无论是来自本地存储,公有云(如:AWS),还是网络存储(如:NFS、Glusterfs、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性
批处理
- 提供一次性任务(job),定时任务(crontab);满足批量数据处理和分析的场景
kubernetes组件
Pod(最小的资源单位)
- 一个pod 会封装多个容器组成一个子节点的运行环境 (最小单元,容器的种类3+)
- 最小部署单元
- 一组容器的集合(基础容器 + 初始化容器+