当前位置:

首页 > 系统应用 > K8s平台可以如何处理Pod预授权问题

K8s平台可以如何处理Pod预授权问题

前言TKEx-CSIG 是基于腾讯公有云 TKE 和 EKS 容器服务开发的内部上云容器服务平台,为解决公司内部容器上云提供云原生平台,以兼容云原生、适配自研业务、开源协同为最大特点。业务容器上云过程中,会遇到一些问题,有的需要业务进行容器化改造,有的需要平台赋能。平台赋能的部分,有一类问题是 CV

前言

TKEx-CSIG 是基于腾讯公有云 TKE 和 EKS 容器服务开发的内部上云容器服务平台,为解决公司内部容器上云提供云原生平台,以兼容云原生、适配自研业务、开源协同为最大特点。

业务容器上云过程中,会遇到一些问题,有的需要业务进行容器化改造,有的需要平台赋能。平台赋能的部分,有一类问题是 CVM 场景下已经有解决方案的,而因运维方式不同在 Kubernetes 平台上不兼容的,比如 Pod 预授权的问题。我们希望用云原生的方式解决这一类问题并提供平台化的能力,让每一位用户都能够在平台上便捷的部署和管理自己的业务。

背景

**新部署业务或扩容时,新设备预授权该如何操作?**想必大家都清楚,出于安全考虑,公司内部重要组件、存储通常会对访问请求进行来源控制,像CDB的IP访问授权、OIDB和VASKEY命令字的模块授权等都很常见。它们要么有自己的授权WEB供用户提单申请,要么提供授权API供运维平台调用。而路由系统在发现注册时,需要准确获取IP设备的地域信息,以提供就近访问的能力,这就需要预注册CMDB。

在以前使用 CVM/TVM 部署业务时,这个问题可以较容易的处理,因为我们是预先拿到了一台虚拟机,已经分配好了 IP 注册好了 CMDB,业务要做的就是用这个 IP 去提单授权,部署业务程序,在一切完备后加上路由上线,这个过程是可以用运维平台的流水线能力做成自动化。

区别于 VM 的拿到可用设备后的步骤型过程化部署,Kubernetes管理的是 Pod 从生产、IP 分配、业务容器启动、路由维护的整个生命周期,由多个系统 Controller 的 Control Loop 做自动化的管理,基于镜像的部署提供了业务实例的伸缩一致性保障,Pod 的销毁重建变成常态,IP 也并非能固定下来。

业务往往面对多种预授权的需要,授权均值时间从秒级到几分钟不等,授权 API 大多并没有设计为承载高 QPS,有一定的复杂性。我们需要能找到一种方法,在 Pod IP 分配后,业务容器起来前处理授权,阻塞住并保障成功后再进行后续过程,并且控制重建过程对授权API的压力。

经过设计与迭代优化,TKEx-CSIG 平台提供给了业务易用的产品能力化的授权能力,方便应对这类 Pod 预授权的问题。

架构和能力解析

架构

上图所示是授权系统的架构,核心思路是使用 init Container 先于业务容器执行的特性,实现在业务 Pod 启动前进行复杂的逻辑预处理。官方对 init Container 的定义如下

This page provides an overview of init containers: specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image

如果是小规模或单个业务的解决方案,我们是可以做的很简单,在业务 Worklooad yaml 中注入 init Container,调用需要的授权 API 实现即可,而要做成平台产品化的能力,还需要考虑以下几点:

  • 易用与可维护

    需要充分考虑业务使用上的效率和可管理性,将权限作为一项资源由平台记录管理,减小变更对业务的侵入性影响。

  • 限频与自愈

    权限 API 往往并没有对高 QPS 的设计,需要限制调用保护下游。

  • 权限收敛

    安全性,Pod 的销毁重建可能导致 IP 变化,考虑主动回收已经过期的权限

授权过程产品能力化

业务仅需在平台 WEB 控制台上登记需要的权限资源,配置权限组,关联权限组到 Workload,平台自动进行 init Container 的配置注入,通过 ENV 传递授权配置索引和相关信息,在 Pod 创建时进行授权过程。授权过程涉及的几个组件功能设计如下:

  • init-action-client

    init Container,仅作一个触发装置,仅做一件事,就是发起 HTTP 调用请求,保持不可变,这样当功能迭代时不必修改业务的 yaml,主逻辑后移处理

  • init-action-server

    deployment 部署可横向扩展,执行预处理逻辑,预注册 CMDB 等操作,并发起流水线调用,启动权限的申请过程并轮询查询,将过程信息关联 POD 暴露出来方便业务自查和管理员定位问题。后文提到的退避重试和断路器逻辑也在这里实现。

  • PermissionCenter

    平台管控组件,位于集群外,负责权限资源的存储和实际申请。包含一个权限资源中心,存储业务登记的权限详情参数方便复用,提供权限 Set 组管理,简化授权过程中的参数传递;使用生产者/消费者模式,基于 Pipline 实现授权 API 的调用和结果查询。

断路器和退避重试机制

可能导致授权过程的异常状况不少,例如权限参数错误的配置,授权 API 服务质量下降或不可用,甚至是网络原因导致的接口错误、超时等。授权 API 往往也并没有设计支持高 QPS,我们采用超时重试,加断路器和指数退避重试去做一个容错性。

  • 超时重试

    体现在接口调用和异步任务的超时设置与重试机制,应对瞬时故障,init-action-client 容器非正常退出也会进行重建,每次创建就是新一轮的重试。

  • 断路器

    使用一个 Configmap 专门记录集群里 Pod 权限申请的失败次数,3次即断路不给申请。并提供一个重置能力,暴露给前端,让用户和管理员可以便捷进行重试。

  • 指数退避

    断路器模式可以阻断用户配置错误这类永远也不可能授权成功的案例,但是无法应对长时间的瞬时故障。比如裁撤期,授权 API 后端可能会有一段时间的拒绝服务,10分钟到几小时,此时会有大量 Pod 授权命中断路器规则无法继续授权,人为处理时效性差也繁琐。我们为每个 Pod 添加了一个带抖动的指数退避器并记录最近的失败时间戳,能够在一段时间后允许尝试一次,如果成功就重置对指定 Pod 的退避,如若不成功更新时间戳重新计时,参数如下,

bk := &PodBreaker{
NamespacePod: namespacePod,
LastRequestFailTime: time.Now(),
Backoff: wait.Backoff{
Duration: 2 * time.Minute,
Factor: 2.0,
Jitter: 1.0,
Steps: 5,
Cap: 1 * time.Hour,
},
}

Finalizer 收敛权限

权限的收敛问题常常被忽视,然而它也是安全方面需要考量的要点。Pod的销毁重建或许是常见现象,IP地址不仅难以确定,还会动态变化,长此以往可能会产生大量的垃圾权限,又或者已经授权的IP被分配到其他业务Pod中,从而引发安全风险。为此,我们打造了一个Finalizer控制器,用于在Pod销毁前进行权限回收。回收动作具备幂等性,并且会尽力执行,毕竟回收能力还取决于权限方是否拥有相应的回收能力。在对接新权限时,我们都会将这一点纳入考虑范围,例如腾讯云MySQL的IP自动授权。

为了减少打 Finalizer 的动作,尽可能不影响非授权关心的 Pod,我们只在 Pod 进行了变更事件时识别有授权 init Container 的 Pod,Patch 上 Finalizer 标记,在这些 Pod 缩容销毁时进行权限的回收并删除 Finalizer,随后 GC 会删除这个 Pod。

kind: Pod
metadata:
annotations:
~
creationTimestamp: "2020-11-13T09:16:52Z"
finalizers:
- stke.io/podpermission-protection
总结

本文解决的是业务使用容器平台时,在业务进程启动前的预处理如自动化授权的一类问题。使用 init Container 实现业务容器启动前的预处理,并将授权特性产品能力化让业务能较为方便的管理和申请权限资源,断路器和退避重试机制提供容错性,使用 Finalizer 提供一个回收的能力防止权限扩散。

参考文章

Init Containers[译] 重试、超时和退避Using Finalizers

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
系统应用
相关文章 更多
Win11专业版和家庭版安装流程有什么区别
Win11专业版和家庭版安装流程有什么区别

Windows 11 家庭版和专业版在安装步骤上并无本质差异,主要区别在于产品密钥激活和功能解锁。本教程指导你如何检查硬件兼容性、使用官方媒体创建工具制作安装盘,以及在安装过程中正确选择版本。同时解析安装后如何验证激活状态,以及从家庭版升级到专业版的正规路径,确保系统稳定且合规。

除了界面,Windows11和Win10还有哪些实质差异
除了界面,Windows11和Win10还有哪些实质差异

除了开始菜单的变化,Windows 11在TPM 2.0安全要求、窗口贴靠布局、驱动兼容性以及系统更新策略上与Windows 10有显著不同。本文详解两者实质差异,助你判断是否值得升级。

win10专业版和家庭版关闭更新方法差别在哪
win10专业版和家庭版关闭更新方法差别在哪

详解Windows 10家庭版和专业版在关闭或暂停自动更新时的操作区别。涵盖通用的暂停更新、活动时间设置,以及专业版独有的组策略管理入口,帮助不同版本用户合理控制更新节奏,避免系统安全风险。

win10暂停更新最长可以设置多少天怎么操作
win10暂停更新最长可以设置多少天怎么操作

想知道Win10暂停更新最长能设多久?官方支持最长暂停35天。本文图文演示如何在设置中开启暂停、确认生效日期,以及到期后如何恢复更新或调整活动时间以避免打扰。

win10怎么屏蔽win10系统更新的弹窗提醒
win10怎么屏蔽win10系统更新的弹窗提醒

本教程介绍如何在Windows 10中通过暂停更新、设置活动时间及安排重启时间来减少更新弹窗提醒。包含通知隐藏技巧及更新失败排查步骤,帮助你在保持系统安全的同时减少工作打扰。

win10更新后台占用CPU过高怎么关闭自动更新
win10更新后台占用CPU过高怎么关闭自动更新

Windows 10 更新时 CPU 占用过高怎么办?本教程演示如何通过任务管理器确认更新进程,使用“暂停更新”功能临时停止后台活动,并设置“活动时间”防止自动重启干扰工作。提供安全的故障排查步骤,避免直接禁用系统服务带来的风险。

win10正在玩游戏弹出更新重启怎么禁止
win10正在玩游戏弹出更新重启怎么禁止

Win10玩游戏时突然弹出更新重启提示?不要强制关机。本文教你如何通过设置“活动时间”避免自动重启,利用“安排重启”规划空闲时间,以及合理使用“暂停更新”功能。区分不同状态下的应对策略,既保护游戏进度又维持系统安全。

win10自动更新抢占网络带宽该怎么处理
win10自动更新抢占网络带宽该怎么处理

Win10自动更新抢占带宽导致游戏卡顿或网页打不开?本教程教你通过任务管理器确认更新进程,利用暂停更新、按流量计费连接和传递优化带宽限制,精准控制Windows Update下载速度,解决网络拥堵问题。

win10家庭版有没有简单办法阻止强制更新
win10家庭版有没有简单办法阻止强制更新

Win10家庭版用户常受强制更新困扰。本文详解如何利用系统自带的暂停更新、活动时间和安排重启功能,在不破坏系统稳定性的前提下减少更新打扰,并分析注册表修改的风险及系统支持现状。

win10升级新版本后取消开机密码失效怎么修复
win10升级新版本后取消开机密码失效怎么修复

Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。