写点什么

我们需要专职 Kubernetes 工程师吗?

  • 2022-07-29
  • 本文字数:3243 字

    阅读完需:约 11 分钟

我们需要专职 Kubernetes 工程师吗?

伴随着技术领域的每一次重大变革,我们都会看到很多拥有新头衔的新职业。如今,基础设施和应用程序部署领域的最大变革是 Kubernetes 被广泛采用。我们随之看到的最新职位是“Kubernetes Operator”,K8s 操作员(不要把它与 Kubernetes 编程操作符这个构造搞混了,后者是 Kubernetes 中用于管理资源的一个软件扩展)。由于“操作员”这个词在 Kubernetes 中有多种含义,为简单起见,我们将在后文中使用“Kubernetes 工程师”这个说法。

 

来自 Kubernetes Gateway API 站点的一张示意图,将 Kubernetes 工程师描述为负责管理网关功能的“集群操作员”。Gateway API 仍处于 alpha 阶段,但这个模型同样适用于使用其他入站-出站选项(例如 Ingress API)的 Kubernetes 实现。

用于在 Kubernetes 中部署 L4 和 L7 路由的一组现代 API,图片来源:https://gateway-api.sigs.k8s.io/

 

Kubernetes 工程师通常由其他头衔的工程师担任例如 Web 应用的站点可靠性工程师,或老派 IT 部门的系统管理员等。云原生组织和团队可能会将这个岗位作为平台运营或云架构师职位的一部分,但越来越多运行现代应用或走云原生之路的公司都需要专门的 Kubernetes 专家。

 

这一变化可以追溯到上次大型基础设施的变革浪潮时期。当时,虚拟化技术取代了裸机,企业争相聘请虚拟化工程师来操作 VMware 和 Citrix 虚拟化平台。

 

在这次变革中,Kubernetes 工程师需要经历一个非常陡峭的学习曲线。Kubernetes 一词经常令人困惑,同样的网络或应用术语在 Kubernetes 世界中可能含义不同。同时,还产生了许多较新的术语。例如,微服务与以 Kubernetes 作为主要部署模式的实现密切相关;服务网格是一种全新的基础设施,旨在帮助团队安全可靠地管理和交付微服务,它基本上总是跟 Kubernetes 关联在一起。

 

未来,几乎每个追求 Kubernetes 的组织都需要符合 Kubernetes 工程师职位描述的人才。如果他们还没有这样的雇员,那么他们很快就会需要一个。那么,这个职位对企业意味着什么、企业如何通过这个岗位来满足自己的需求呢?

 

基本职责

 

Kubernetes 工程师的首要任务是确保 Kubernetes 在其所在组织正常运行。该岗位的职责通常包括:

 

  • 安全性。Kubernetes 并非开箱即用的。Kubernetes 工程师的工作是锁定 Kubernetes 并对其进行配置,以便开发人员在集群上部署他们的应用程序时,不必要的情况下避免暴露各种 API、允许未经授权的流量等等。

  • 性能和可观察性。虽然 Kubernetes 因其众多弹性特点而出名,但对其进行性能调优需要知识全面。比如,即使在 CPU 或内存层资源不足的情况下,Pod 可能看起来也是在正常运行,结果却是导致了延迟、丢包或重复重启。Kubernetes 工程师的工作是通过查看服务和流量指标来寻找比“Pod 是否启动并正常通过流量?”更细微的问题,进而识别问题并对性能进行调优。

  • 网络。Kubernetes 网络不同于传统网络,Kubernetes 网络多路复用第 4 层和第 7 层,并通过 API 运行一切。Kubernetes 网络需要工程师管理南北和东西流量,并调整维护关键服务所需的内部网络要求。许多流量管理工具是 Kubernetes 独有的——例如,Ingress控制器是专用于 Kubernetes 的组件,它是高级 Ingress 约定(如标头重写和流量整形)所必需的。Kubernetes 工程师应该精通这种新颖且差异化的网络环境,并准备好为 Kubernetes 设置和管理网络管道。

  • 基础设施。组织可以选择自己运行 Kubernetes,或者使用托管服务。不管是哪种情况,Kubernetes 工程师的任务都是确保一切都能以正确的方式运行、获得正确的补丁,并有足够的资源来运行应用程序。可以这么说,Kubernetes 工程师很少有服务器机柜的钥匙,但他们通常能够判断 CPU、内存和其他物理元素是否出现了故障或不足。使用托管 Kubernetes 环境时,Kubernetes 工程师可以确保服务已配置并能根据需要进行扩展,而不会过度配置。

工作范围

 

Kubernetes 工程师角色的工作范围取决于三个因素:

 

  • 企业基础设施规模

  • 企业在 Kubernetes 采用曲线上的位置

  • Kubernetes 部署的复杂性

 

如果你是一家初创公司,只在小型基础架构上运行数量有限的应用程序,“Kubernetes 工程师”角色可能就只是某人工作的一部分内容而已,甚至可能仅限于在托管 Kubernetes 服务(例如 Google Kubernetes Engine)上部署容器和应用。此类服务抽象出了物理硬件和网络层,并能很好地处理扩展、基本安全性和基本网络管理需求,只需要非常少的手动工作。

 

但是,企业在决定一个兼职的 Kubernetes 工程师是否够用之前,需要考虑一点:基础设施越大,移动部件的数量越多,工作就越复杂和耗时。

 

下图是一个非常简单的视图。从广义上讲,在裸机上管理和操作 Kubernetes 比使用托管服务复杂得多,但是使用托管服务意味着对物理层的可见性为零,并且会增加一些延迟。非常多的问题、冲突和性能问题都可以追溯到多租户基础架构上。如果企业认为云端有很多“嘈杂的邻居”不是什么好事情,那就想象下它们在托管 Kubernetes 服务中的样子吧!这一逻辑同样适用于驻留在大型容器和更高容量 Kubernetes 集群上的大型应用程序。

 

 

除了基础设施问题之外,企业还需要考虑将运行多少个集群,以及每个集群中有多少个 pod 和节点。

 

多集群 Kubernetes 要复杂得多,因为它需要对安全性、网络、API 和流量管理进行额外的定制,还需要管理和链接多个 Ingress 控制器(稍后会详细介绍),并确定是否需要运行多个集群以进行热故障转移(很昂贵),企业也可以选择容忍备份集群从头开始启动带来的一些停机时间。

 

对于单个集群和数量有限的 pod 和服务,可观察性和故障排除远没有那么复杂。一旦企业必须对运行在十几个 Pod 上的多个服务进行故障排除并观察它们的性能,那么工作就会变得非常繁重。

 

那么,Kubernetes 工程师是负责部署应用还是只管理基础设施?这需要具体情况具体分析。

 

在大型组织中,Kubernetes 工程师的职责主要是保障 Kubernetes 环境的安全和正常运行,而不是编写 YAML 清单或监督应用程序部署工作,他们通常与平台运维团队(或作为该团队的成员)密切合作,更多的是设置受信任的服务和 API 目录,或设置经过审查以处理 Kubernetes 设置的容器注册表。

 

较小的组织或团队需要对 Kubernetes 投入更多精力,这里的 Kubernetes 工程师角色可能与 DevOps 团队重叠,并要负责与应用程序开发人员合作监督部署流程。

 

什么时候需要 Kubernetes 工程师

 

一旦确定 Kubernetes 将在应用程序基础架构中发挥重要作用,企业就要开始考虑聘请一名 Kubernetes 工程师,或者至少是一名具有 Kubernetes 专业知识、并有实践经验的应用开发人员。

 

企业如果在开始部署应用之前,遵循“构建坚如磐石的、以 Kubernetes 集群为基础的现代应用程序设计模式”(在 F5 NGINX,这种模式被称为“集群输出”),那么你就需要尽快招募一名 Kubernetes 工程师。

 

在 Kubernetes 中出现的问题有很多,相关的风险很高,而架构、服务设计和其他缺陷可能不会在“上线”后自己暴露出来。出于这个原因,在采用的早期就发展自己的 Kubernetes 工程技术是明智之举。

 

Kubernetes 认证是否必要?

 

虽然成为一名认证的 Kubernetes 管理员(CKA)绝对是一个加分项,但有很多人是以更老派的方式——通过来之不易的经验和教训来学习如何运维 Kubernetes 集群。事实上,我们认为执行特定任务的经验比 CKA 证书更有用,原因有二:

 

  • Kubernetes 比任何认证课程都复杂得多。

  • 一旦构建了所有服务、配置了网络并设置了安全性,任何 Kubernetes 部署都会变得非常复杂。

 

当然,经验和认证都有是两全其美的。在花时间亲身体验 Kubernetes 之后再去考 CKA 是一个很好的策略。

 

另外一个问题是:Kubernetes 工程师需要高级 Kubernetes 网络专业知识吗?答案是不必要。

 

Kubernetes 工程师需要对 Kubernetes 网络概念有深入了解,并具备配置 Ingress 控制器、多集群网络以及管理东西和南北流量的经验,但不一定需要更高级的容器网络接口(CNI)应用经验。这些应用旨在提供的东西更像是 Kubernetes 中的网络管理和网络安全层。对于现在大多数 Kubernetes 用例来说,CNI 是多余的。所以,Kubernetes 工程师有这方面的技能当然更好,没有也无所谓。

 

原文链接:

 

https://www.cncf.io/blog/2022/03/03/an-emerging-job-kubernetes-engineer/

 

2022-07-29 09:204537

评论 1 条评论

发布
用户头像
CKA 太贵,有效期太短,而且多半是形式化的命令操作,没有什么实际意义。
2022-08-02 08:06
回复
没有更多了
发现更多内容

关于知识库:你需要知道的一切

小炮

Hoo虎符研究院| 稳定币的主要分类及发展趋势

区块链前沿News

虎符研究院 稳定币

杜绝不良信息侵害未成年,皮皮APP发起语音社交行业自律书

联营汇聚

MongoDB案例分享:如何使用oplog恢复数据

MongoDB中文社区

mongodb

盲盒风潮过后,中国收藏玩具市场该何去何从?

易观分析

盲盒 潮玩

基于深度学习的时间序列预测

云智慧AIOps社区

什么是以特性为核心的持续交付|阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 研发效能 研发 DevOps实践指南

聊聊 kerberos 的 kinit 命令和 ccache 机制

明哥的IT随笔

数据安全 kerberos

租房小程序

源字节1号

前端开发 后端开发 租房小程序

手把手教程|构建无服务器通用文本识别功能

亚马逊云科技 (Amazon Web Services)

架构

聊聊编程中的 “魔数”

程序员鱼皮

基于WEB快速开发平台的轻量ERP

雯雯写代码

ERP 快速开发平台

如何从头到脚彻底解决一个MySQL Bug

华为云开发者联盟

MySQL 数据库 华为云 bug GaussDB(for MySQL)

基于微信小程序的大学社团平台的可研方案

CC同学

你的密钥被我看见了 !逆向获取密钥

H

网络安全 逆向

2 月月更获奖名单公布!获奖的小伙伴速速领取奖励啦!

InfoQ写作社区官方

2月月更 热门活动

敏捷小游戏的思考-上篇

LigaAI

团队管理 敏捷实践

fastposter v2.6.0 发布 电商海报生成器

物有本末

fastposter 海报生成器 电商海报

龙蜥开发者说:做开源,兴趣是最好的源动力 | 第1期

OpenAnolis小助手

开源 创作 开发者故事 兴趣是动力

被冰封的 Bug:Fishhook Crash 修复纪实

声网

Dev for Dev fishhook

租房小程序

源字节1号

前端开发 后端开发 租房小程序

尤达DDD领域驱动设计思想 第一章作业(理解单纯的面向对象设计思想的缺陷)

代廉洁

尤达DDD领域驱动设计思想

我给公司用了这款工具,领导直接给我涨了两千工资

刘祥

后端技术 编程工具

VuePress 博客之 SEO 优化(一) sitemap 与搜索引擎收录

冴羽

Vue vuepress SEO 博客搭建 sitemap

一文读懂 MongoDB驱动程序 API

MongoDB中文社区

mongodb

经验分享 | 搭建帮助中心的最强攻略

小炮

【Python训练营】Python每日一练----第31天: k倍区间

是Dream呀

3月月更

openGauss社区成立ReleaseManagement SIG

openGauss

安全app之PHP代码审计

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 代码审计

好云推荐官丨飞天加速之星怎样选择云服务器ECS?

阿里云弹性计算

阿里云 采购季 好云推荐官

做毕设用不起GPU?亚马逊云SageMaker免费给你用

亚马逊云科技 (Amazon Web Services)

学习

我们需要专职 Kubernetes 工程师吗?_语言 & 开发_Jenn Gile_InfoQ精选文章