Kubernetes 工程师如何规划集群架构
决定要多少个节点、分布在哪些可用区,以及托管服务还是自建集群更适合当前工作负载和预算。
当一台服务器上运行的几个容器已经不够用时,企业通常就开始在迪拜聘请 Kubernetes 工程师:服务数量超出了一台机器所能舒适容纳的范围,流量会突然激增、需要自动扩容,或者即便某台服务器出故障也必须保持运行。Kubernetes 的维护者将其描述为一个可移植的开源平台,用于管理容器化的工作负载,它诞生于 Google 十多年大规模运行容器的经验之上,正好解决这一类问题。
它本身并不能解决的是简单性。一个集群会带来真实的运维面:Pod 之间的网络、容器重启后仍能保留的存储,以及团队层面的访问控制。迪拜 Kubernetes 工程师的价值,就在于判断这份复杂度何时值得承担,并在值得承担时把集群妥善运行起来,而不是因为这个名字耳熟能详就默认采用它。
Kubernetes 工程师搭建什么
需要刻意设计、而不能靠默认设置的那部分集群工作。
决定要多少个节点、分布在哪些可用区,以及托管服务还是自建集群更适合当前工作负载和预算。
告诉 Kubernetes 每个应用应如何运行、扩容和恢复的配置,与其部署的代码一起纳入版本控制。
随需求变化自动增减容量的规则,而不是按全年最繁忙那天配置一台大部分时间都闲置的服务器。
明确设定哪些服务可以互相通信,哪些人和流水线可以修改什么,而不是默认全部开放。
使用集群自带的密钥管理,或外部密钥管理器,让凭证和配置不出现在容器镜像和应用代码中。
覆盖每个 Pod 和节点的日志、指标和告警,让出问题的服务能被及时发现,而不是靠客户投诉才知道。
重要技能
对平台本身的深入理解,而不只是听说过这个名词。
无论集群已经存在,还是仍处于规划阶段,下表都是任何一家准备聘请 Kubernetes 工程师的企业的起点。
| 技能或工具 | 优秀表现是什么样的 | 为什么重要 |
|---|---|---|
| 核心 Kubernetes 对象 | 能清楚解释 Pod、Deployment、Service 和 Ingress,而不是用术语来掩盖知识空白 | 这些是集群上其他一切的构建基础 |
| 托管服务经验 | 至少熟悉一种托管方案,例如 EKS、AKS 或 GKE,而不只是本地测试集群 | 迪拜大多数生产集群运行在托管服务上,而不是裸机之上 |
| 资源请求与限制 | 为每个工作负载有意识地设置资源请求和限制,而不是让 Kubernetes 自行猜测 | 缺少限制是一个吵闹的服务拖垮其他服务资源的常见原因 |
| 发布策略 | 使用滚动更新或类似策略,并配有经过测试的回滚路径 | 没有回滚方案的集群,会把一次糟糕的发布变成一场故障 |
| 成本意识 | 主动为节点和自动扩缩容做合理配置,而不是让集群长期资源过剩 | 闲置且规模过大的集群是 Kubernetes 中最常见也最可避免的成本浪费之一 |
Kubernetes 文档本身把自我修复、自动化的发布和回滚,以及水平扩容列为其核心能力,候选人应该能讲清楚每一项在实际中究竟如何运作,而不只是背出这份清单。
合作方式
专属 Kubernetes 工程师适合正在生产环境中运行集群、随工作负载变化需要持续关注的企业。限定范围项目适合一项明确的工作,例如设计第一个集群、把现有应用迁移上去,或在云服务商之间迁移。咨询服务适合已经在运行 Kubernetes、希望在下一阶段增长前获得成本、可靠性或安全方面外部审查的团队。招聘支持适合正在围绕 Kubernetes 组建自有长期平台团队的企业。
评估候选人
把真实集群经验与单纯的课程证书区分开的检查方式。
无论您通过哪种方式聘请 Kubernetes 工程师,无论是专属岗位、项目,还是作为我们招聘支持的一部分,都请走完以下检查。
大致有多少节点和服务,使用哪种托管服务或发行版,运维层面最繁忙的一天是什么样的。
描述一个占用 CPU 或内存远超预期的服务,问他们会如何定位和解决。含糊的回答意味着实际动手经验有限。
一个真实的答案会涉及具体出了什么问题、是如何被发现的,以及回滚是怎样进行的,而不是笼统地说一句“我们用滚动更新”。
在一个真实示例中查看资源限制、健康检查和密钥处理,而不是一份简陋的教程文件。
一位实力候选人能描述一个根本不需要 Kubernetes 的工作负载,展现出判断力,而不是无论是否合适都偏好这项工具。
认证
这个平台有一项被广泛认可的专属认证。
Linux 基金会与云原生计算基金会联合运营 Certified Kubernetes Administrator 考试,这是一项在真实运行中的集群上直接完成的实操型、按表现评分的测试,而不是选择题,有效期为两年。
CKA 证书可以通过 Linux 基金会自身的验证工具核实,在您第一次聘请 Kubernetes 工程师时,这是一个合理的初筛条件。同时也请查看真实的配置清单和一次真实的事件处理故事,而不是仅凭这枚徽章本身作为生产经验的证明。
阿联酋考量
值得尽早决定,因为它会影响集群设计及其成本。
亚马逊云科技在阿联酋境内实体运营着一个区域,代号为 me-central-1 的中东(阿联酋)区域,于 2022 年开放,支持其托管 Kubernetes 服务。如果把基础设施保留在境内对您的企业很重要,这是在聘请 Kubernetes 工程师并一起规划集群时,值得权衡的真实选项。
当集群处理客户或员工数据时,阿联酋政府官方门户上列明的 2021 年第 45 号联邦法令,规定了这些数据必须如何得到保护,无论集群运行在哪个云区域。
大多数在迪拜聘请 Kubernetes 工程师的企业,是从同一分类中的其他角色页面来到这里的,因此这个角色属于我们的 DevOps 分类,是 迪拜招聘开发人员 板块的一部分。如果不需要完整集群、只用容器本身更适合您的工作负载,我们的 Docker 工程师 页面涵盖这一起点,我们的 Terraform 工程师 页面则涵盖为集群配置底层基础设施。集群上线后,站点可靠性工程师 经常与 Kubernetes 工程师配合工作,而我们更广泛的 云服务 团队可以在平台搭建完成后接手持续托管。
直接解答
如果您的应用只是运行在一两台服务器上的几个容器,普通的 Docker 或更简单的托管容器服务通常就够用了,在这之上再加 Kubernetes 只会增加运维复杂度。一旦您有很多服务,需要自动扩缩容和自我修复,或者必须在多台服务器或多个可用区之间可靠运行,Kubernetes 才真正物有所值。我们的 Docker 工程师页面覆盖了这个更简单的起点。
对大多数迪拜企业来说,来自云服务商的托管 Kubernetes 服务是明智的起点,因为服务商负责运行控制平面,并承担大部分运维负担。从零开始运行自有集群是一项大得多的工程,通常只有在存在特定的数据存放地或基础设施需求时才有必要。
这完全取决于应用目前的搭建方式以及它拥有多少个服务,因此在了解具体情况之前,我们不会给出一个笼统的数字。开工前会先商定一份书面范围,说明包含哪些内容,以及工作大致分几个阶段进行。
通常不是他们的主要工作重心。Kubernetes 工程师的核心技能是集群本身:调度、网络、扩缩容和可靠性。应用代码通常由编写它的开发人员负责,Kubernetes 工程师则提供其运行的平台。
往往是的,至少在初期是这样。Kubernetes 解决的是随规模和复杂度而来的问题,流量较轻的小型应用很少需要它提供的自动扩缩容和自我修复能力。值得在项目评估阶段就诚实地提出这一点,而不是因为这个名词广为人知就默认使用它。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。