尽管IT部门的大部分职位都会增加,但职业顾问说,计算机操作员预计会减少。这个角色涉及运行Shell脚本,FTPing文件以及处理异常,但由于诸如cron之类的工具可以实现自动删除操作,导致做同样工作的人越来越少。
事实证明确实如此。如今,运行Kubernetes的人太多,他们花了太多时间进行路由操作。现在,这些工作急需被自动化。
一直以来,谷歌都需要为其不断增长的云服务雇用系统管理员和可靠性的工程师,而根本无法雇用足够的员工。问题是要吸引足够多的人,他们还要足够聪明,有能力成为系统管理员,然后搬到硅谷。因此,Google还是决定建立一个通用框架来管理运行任何应用程序的虚拟机集群。虽然Kubernetes有时被描述为全栈系统,但实际上可能需要干预和管理,例如,随着工作负载的变化而应对扩展。
有关 Kubernetes 操作的专业知识,专家总结为“有状态应用程序的三重奏”——集群管理、负载平衡和复制。这些功能通常与对高可用性的需求相关。根据专家的说法,三种工作大大增加了管理应用程序的工作量。这就是人们增加操作员或编写自动化工具来管理基础架构的关键所在。
Kubernetes 项目为操作员描述了五个级别,有时称为成熟度,这些大致对应于操作员的技能水平。一级能够进行工具的基本安装,包括为运行该应用程序的资源提供资源或与集群协商。第二级提供补丁和次要版本的无缝升级,而第三级包括备份和故障恢复。在第四级,可在处理警报,日志处理和工作量分析,而在第五级,可解决Kuberenetes无法解决的一些扩展问题,以及诸如调优配置或调度的高级主题。工作量。
一旦存在特定工具(例如Redis,CouchDb或Kafka)的自动化操作工具,也会有人将其放在github中分享。创建自动化操作工具可能需要一个人/年,但却能为一个集群节省半个人/年。设想如果部署超过一千家公司和一千个集群呢?
如果你有一个内部应用程序需要关注三重奏(集群、负载平衡和复制),则会导致持续的维护成本。如果你遇到了谷歌那样的规模问题,并且不想聘请软件可靠性工程师团队来完成可以在某种程度上进行编程的工作,那么编写自己的自动化操作工具很有必要。
自动化操作工具由两部分组成:用于执行命令的代码(在Go上编写,Ansible或更简单的工作,在Helm上编写)以及自定义资源定义(CRD)。CRD将操作员代码映射回kubectl命令。这使得调用操作员的功能时需要创建一个YAML文件,并通过kubectl-apply将其传递给Kubernetes。
再说一次,团队中的某人必须了解Ansible或Helm,该代码可能需要存储在版本控制中,并作为软件开发工件进行管理。为了使其不仅仅是一个单点故障,团队将希望第二或第三位程序员应熟练使用Go或Ansible。