赞
踩
AWS: Elastic Kubernetes Service(EKS)
Azure: Azure Kubernetes Service(AKS)
Google:Google Kubernetes Engine(GKE)
阿里:Container Service for Kubernetes(ACK)
用于自动部署、扩展和管理 “容器化(containerized)应用程序” 的开源系统。可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。
试想下传统的后端部署办法:把程序包(包括可执行二进制文件、配置文件等)放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。设想一下,如果服务的请求量上来,已部署的服务响应不过来怎么办?传统的做法往往是,如果请求量、内存、CPU 超过阈值做了告警,运维人员马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力。
这样问题就出现了:从监控告警到部署服务,中间需要人力介入!那么,能不能案发自动完成服务的部署、更新、卸载和扩容、缩容呢?而这就是 K8S 要做的事情,自动化运维管理容器化程序。
K8S 的目标是让部署容器化应用简单高效。
K8S 解决了裸跑 Docker 的若干痛点:
K8S 提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。
① 轻量级:
②开源
③自我修复
在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,对异常状态的容器进行重建(先创建在删除),保证业务不中断。
⑥弹性伸缩(自动)
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
弹性——》 人为只要指定规则,满足条件时,就会自动触发扩容或缩容的操作
伸缩——》扩容和缩容(节点应用类型nginx)
⑤自动部署和回滚
K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将
回滚更改,确保升级不会影响业务。
⑥服务发现(把服务暴露出去)和负载均衡
K8S为多个pod(容器)提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题
⑦机密和配置管理
(secret- -》 安全/认证加密性的数据------>RBAC)
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将–些常用的配置存储在K8S中,方便应用程序使用。
⑧存储编排(静态、动态)
挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如NFS、GlusterFS、 Ceph)
作为集群资源的一部分使用,极大提高存储使用灵活性。
⑨批处理
提供一次性任务(job),定时任务(crontab);满足批量数据处理和分析的场景
K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运算工作负载节点。
主节点一般被称为 Master 节点,而从节点则被称为 Worker Node 节点,当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。
控制器 | 说明 |
---|---|
Node Controller(节点控制器) | 负责在节点出现故障时发现和响应 |
Replication Controller(副本控制器) | 负责保证集群中一个RC(资源对象Replication Controller)所关联的Pod副本数始终保持预设值。可以理解成确保集群中有且仅有N个Pod实例,N是RC中定义的Pod副本数量 |
Endpoints Controller(端点控制器) | 填充端点对象(即连接Services和Pods),负责监听Service和对应的Pod副本的变化。可以理解端点是一个服务暴露出来的访问点,如果需要访问一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的endpoint |
Service Account & Token Controllers(服务账户和令牌控制器) | 为新的命名空间创建默认账户和API访问令牌 |
ResourceQuota Controller(资源配额控制器) | 确保指定的资源对象在任何时候都不会超量占用系统物理资源 |
Namespace Controller(命名空间控制器) | 管理namespace的声明周期 |
Service Controller(服务控制器) | 属于K8S集群与外部的云平台之间的一个接口控制器 |
是负责资源调度的进程,根据调度算法为新创建的 Pod 选择一份合适的 Node 节点。可以理解成 K8S 所有 Node节点的调度器。当用于要部署服务时,Scheduler 会根据调度算法选择最合适的 Node 节点来部署 Pod。
容器引擎,运行容器,负责本机的容器创建和管理工作。
Kubernetes 包含多种类型的资源对象:Pod、Lable、Service、Replication Controller 等。所有的资源对象都可以通过 Kubernetes 提供的 Kubectl 工具进行增删改查等操作,并将其保存在 etcd 中持久化存储。Kubernetes 其实是一个高度自动化的资源控制系统,通过跟踪对比 etcd 存储里的资源期望状态与当前环境中的实际资源状态的差异,来实现自动控制和自动纠错等高级功能。
Pod 控制器是 Pod 启动的一种模板,用来保证在 K8S 里启动的 Pod 应始终按照用户的预期运行(副本数、生命周期、健康状态检查等)。K8S 内提供了众多的 Pod 控制器,常用的有以下几种:
ingress 包含:nginx、Haproxy、traffic、 istio、kong
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。