这里是我自己写的一个 “小白学习 kubernetes” 的一个目录导航!跟我一样的小白可以跟着导航一起进行学习:
kubernetes 学习导航:
kubernetes —— 工业级的容器编排平台;它是一个可移植的、可扩展的 开源 平台,用于管理容器化的工作负载和服务,kubernetes 源于希腊语,意味“舵手”!
kubernetes —— 简称 “k8s”,是因为“k-s之间有8个字母。
kubernetes —— 自动化的容器编排平台:负责应用部署、应用弹性、应用管理,但是这些都是基于容器的!
近十几年来,IT领域的新技术、新概念层出不穷。例如:devops、微服务、容器、云计算和区块链等… …
以docker为首的容器化技术解决了 devops 中 “因为 环境、配置及程序本身不同 而造成的各种部署配置的问题”,docker 将它们统一在容器镜像之上;如今,越来越多的企业选择以“镜像文件作为交付载体”,镜像内直接包括了程序本身以及其依赖的系统环境、库、基础程序等…
部署的复杂度虽然解决了,但是随着 “开始使用越来越多的容器进行:封装和运行应用程序,必将会导致容器的管理和编排变得更加困难。最终,用户不得不对容器实施分组,以便跨所有容器提供网络、安全、监控等服务。 结果,以 “k8s” 为代表的容器编排系统应需而生!
在生产环境中,会涉及到多个容器;这些容器必须跨多个服务器主机进行部署。k8s 可以提供所需的编排和管理功能,以便用户针对这些工作负载轻松的完成大规模的容器部署,而且借助 K8S 的编排功能,用户可以构建出跨多个容器的应用服务,并且可以实现:跨集群调度、扩展容器、长期持续管理容器的健康状态等等…
k8s 利用容器的扩容机制解决了很多的问题。它将容器归类为一起,形成了一个 “容器集(pods)”,为分组的容器增加了一个抽象层,用于帮助用户调度 工作负载,并为这些容器提供所需的联网和存储等服务,k8s的其他部分可以帮助用户在这些 pod之间达成负载均衡,确保运行正确数量的容器,以充分支持实际的工作负载!
这个功能的实现,是通过 k8s 中的调度器这个组件来实现的,当你提交了容器之后,k8s 通过调度器来观察这个容器所需要的资源(eg:cup、mem),然后根据这些条件将容器放置在集群中一个合适的节点上,完成自动部署!
并且它会通过调度机制混合 关键性应用和非关键性应用的工作负载于同一节点上,以便提高资源利用率!
调度过程:等待调度 —— 正在调度 —— 调度完成!(下面这个图解是我截取自阿里云课堂的视频讲解云原生,如有侵权联系我删除)
支持 容器故障后的自动重启、节点故障后重新调度容器!以及集群内节点的的健康状态检查!
健康状态检查:k8s会通过这个功能监控集群中所有节点的健康状态!当集群中某一台节点出现故障的时候, k8s 会将运行在故障节点上的容器自动的迁移到健康的节点上! (这个图解是我截取自阿里云课堂的视频讲解云原生,如有侵权联系我删除)
k8s有业务负载检查的功能,它会检测这个业务所承担的负载,如果这个业务对CPU利用率太高或响应时间太长,它可以对这个业务进行扩容!
(比如下图:检测到黄色业务过度忙碌,它就将黄色业务由一份分为三份,然后就可以通过负载均衡来提高响应时间或减少CPU利用率)
k8s 通过其附加组件之一的 kubeDNS(CoreDNS)为系统内置了服务发现功能!
它会为每个 service 配置 DNS 名称,并且允许集群内的客户端可以直接使用此名称发出访问请求!
而 service 则通过 iptables 或 ipvs 内建了负载均衡机制!
k8s 支持 “灰度” 更新应用程序或配置信息。
它会监控 更新过程中应用程序的健康状态!以确保他不会在同一时刻杀死所有的实例,而此过程一旦有故障发生,则 立刻自动执行 回滚 操作!
回滚(RollBack) —— 指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为!
“k8s” 的 ConfigMap 实现了 配置数据和 docker镜像解耦。需要时,仅对配置做出变更而无须重新构建 docker镜像。 对于用户所依赖的一些敏感数据(eg:用户名、密码…),k8s 专门提供了 Secret对象 为其解耦!既便利了应用的快速开发和交付,又提高了安全保障!
“k8s” 支持 pod对象 按需 自动挂载不同类型的存储系统。
包括:节点本地存储、云存储(AWS)、网络存储系统(NFS、ISCSI、GlusterFS等…)
除了服务型的应用,“k8s” 还支持批量处理 job 及 CI(持续集成)。也可以实现容器故障后的恢复。