王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务。
背景
“功能“解决是产品有或者没有一个能力的问题,有了“功能”之后,如何通过良好的引导、提示,以及交互来帮助用户更“流畅”的使用产品是一个值得思考的问题。
例如:乐高已经有了超过 3700 种不同的模块,这些模块可以拼出无限种模型。然而,不同模型的呈现完全不一样,有可能只是几个小模块的位置的改变就能带来意想不到的效果。
近过几年的努力,TKE 在功能层面提出了大量新特性:例如:通过 LB 直连 Pod 提升性能[1],集群原地升级[2],虚拟节点[3],动态调度器[4],更多可参考容器服务产品动态[5]。
此外,TKE 也重视用户的整体使用体验,为此拜访了多家公司,收集了很多需求,并根据用户重视分层,进行了优化和工具的开发,用户可以利用这些优化的小技巧,更顺滑的来体验容器服务,更“接地气”的降低产品使用门槛,提升产品使用体验。
提升列表
集群/节点相关
推荐:节点搜索能力增强
节点搜索支持通过 Label/IP/是否封锁/节点状态 等多维度的搜索。
- Label 搜索格式与原生 Kubernetes 相同:"k1=v1,k2=v2"
- IP 多值搜索时仅支持精确查询,单 IP 搜索支持模糊查询
使用方式:节点管理 -> 节点 -> 搜索 或者 节点池详情页 -> 下拉到节点列表 -> 搜索
推荐:节点初始化错误展示优化
- 【CVM 发货失败 相关错误细化展示】如果因为 CVM 发货失败导致节点购买失败,除了报 LAUNCH_FAILED(即发货失败), 还会显示详细发货失败的原因:比如 VPC 子网 IP 不足/磁盘资源不足/余额不足/置放群组配额不足等等。
- 【节点初始化 相关错误细化展示】会详细在节点列表展示节点初始化失败的步骤以及对应信息:比如挂盘失败、核心组件异常等等。
使用方式:节点管理 -> 节点 -> 在状态栏点击查看状态即可查看错误
节点池节点操作标准化:支持封锁/驱逐
节点池内节点操作支持封锁/驱逐,已与集群内节点列表操作保持完全同步,您可以在节点池内高效管理节点。
使用方式:节点池详情页 -> 下拉到节点列表 -> 在操作列对单节点进行操作 或者 选中批量节点后进行批量操作(点击上方【更多操作】按钮可批量封锁/取消封锁节点)
删除保护逻辑优化
客户反映:如果创建集群时开启了误删选项,开启后假如创建失败,客户也无法删除。
现在您可以在【集群列表页】为集群关闭删除保护功能。
使用方式:集群管理 -> 集群操作列表 -> 更多 -> 关闭集群删除保护
公网 IP 展示优化
有些客户反馈公网IP的配置入口过于隐蔽,默认带宽值过小,无法满足业务需要。
我们采取图形化的形式(拖动条)来代替输入框,强化显示效果。
使用方式:新建节点/新建节点池 -> 选择机型 -> 拖拽到底部 -> 设置公网带宽
节点池展示信息结构化 / 高级参数展示
- 增加节点池核心定义/功能的概览,让客户快速了解节点池的使用场景
- 节点池信息结构化展示(按模块聚合展示,同时显示了更多的高级参数,提高了可观测性)
- 节点池基本信息(弹性伸缩相关配置、节点数量等信息)
- 节点配置详情(节点模板相关配置、节点池扩容节点自动继承的配置)
节点直接跳转 CVM 优化
旧版本的跳转 CVM 按钮显示不稳定,并且入口不突出。
使用方式:鼠标悬浮到节点 ID 处(如果您直接点击节点 ID, 会跳转到 Node 详情页) -> 点击 “跳转到 CVM 实例详情页” -> 会跳转到 CVM 实例详情页。
创建节点时增加了容器网络 IP 校验
创建节点前,会根据您的容器网络配置(网络模式、网段等)来判断容器网络是否可以满足这批节点创建的要求。考虑到某些特殊场景下您可能不需要校验容器网络,我们提供了参数 skip 可以供您跳过校验。(参数的详细说明可参考API文档[6])
使用方式:新建节点/添加已有节点/新建节点池 -> 更多设置 -> 设置skip参数
集群添加已有节点时支持填写挂载分区/LVM 名
在添加已有节点时如果您对磁盘做了分区/LVM,请在挂载分区填写想要挂载的分区名/LVM名,如果磁盘未分区或 LVM,无需填写挂载分区,只需填写挂载点。
使用方式:添加已有节点 -> 选择节点 -> 勾选数据盘挂载 -> 填写挂载分区以及挂载点
Kubernetes 对象相关
推荐:批量导入键值对:配置管理 & 环境变量优化
支持一次性从剪切板导入批量的键值对。变量名为空时,在变量名称中粘贴一行或多行 key=value 或 key: value 的键值对可以实现快速批量输入。
使用方式1:工作负载 -> 新建负载 -> 实例内容器 -> 环境变量
使用方式2:配置管理 -> 新建 ConfigMap/Secret -> 内容
推荐:CronJob 支持保留数量/暂停/手动触发/显示由 Cronjob 生成的 Job 列表
- 保留成功Job数:防止 Job 无限生成,影响集群性能
- 保留失败Job数:防止 Job 无限生成,影响集群性能
- 暂停:会停止 Cronjob 的运行,不再会生成新的 Job。支持恢复运行
- 手动触发:无需等到 Cronjob 设置的 Crontab 时间就支持利用 Cronjob 里的 Job 模板生成一个新的 Job
使用方式:工作负载 -> Cronjob -> 新建 -> 保留成功 Job 数/保留失败 Job 数
使用方式:工作负载 -> Cronjob 列表 -> 更多-> 手动触发/暂停
点击上图中的 CronJob 的名称,就可以查看到由 CronJob 生成的运行中的 Job 列表:
HostAliases 产品化
HostAliases[7] 用于为 Pod 的 /etc/hosts 文件中添加条目,可以在 Pod 级别覆盖对主机名的解析。以增加 Pod 的 DNS 配置。
使用方式:工作负载 -> 新建负载 -> 高级设置 -> 主机别名
lifecycle 产品化
lifecycle[8] : 容器的生命周期事件挂接处理函数。容器可以为每个事件指定一个处理程序,当一个容器启动后,Kubernetes 将立即发送 postStart 事件;在容器被终结之前, Kubernetes 将发送一个 preStop 事件。
使用方式:工作负载 -> 新建负载 -> 实例内容器 -> 生命周期
Service 默认 “仅在集群内访问”;Service 类型解释增加对应英文名词
- “仅在集群内访问”访问方式符合使用习惯
- 中英文名词对照减少用户的理解成本,符合 Kubernetes 原生使用习惯
一键“重新部署” 在 Deployment、StatefulSet 和 DaemonSet 上支持
和 Deployment 一样,StatefulSet 和 DaemonSet 现在支持一键重新部署了,免去删除后重新配置的烦恼。
使用方式:工作负载 -> 负载列表 -> 更多 -> 重新部署
Ingress 证书支持继承 LB 的证书
支持直接使用 CLB 的证书自动创建 Ingress 的 HTTPS 证书,省去繁琐的 Secret 创建流程。
使用方式:服务与路由 -> Ingress -> 新建Ingress -> 监听端口勾选 Https:443 -> 新建密钥 -> 选择服务器证书
Secret 支持 TLS 类型
除了 CLB 证书,您有时会使用自己的证书,保存证书需要使用 TLS 类型的 Secret
使用方式1:配置管理 -> Secret -> 新建Secret -> TLS证书
使用方式2:服务与路由 -> Ingress -> 新建 Ingress -> Nginx 负载均衡器 -> 监听端口勾选 Https:443 -> 新建密钥
subPathExpr 在控制台上支持配置
subPathExpr[9],支持将环境变量映射到 Volume 里的一个子路径
使用方式:新建负载 -> 使用数据卷 -> 增加环境变量 -> 使用挂载点 -> 选择 subPathExpr
kube-system、kube-node-lease、kube-public 里的资源支持在控制台支持修改
以前为了防止用户误触,在控制台限制了这些命名空间里资源的修改,但事实上有些用户本身就具有这些命名空间的资源管理权限,因此新版本在控制台去掉了这些限制,权限逻辑交给后台判断,若您没有相关命名空间的权限,修改资源也会报错。
使用方式:新建负载 -> 选择命名空间 -> 修改资源配置
使用方式:授权管理 -> 选择任意一个入口 -> RBAC 策略生成器 -> 选择子账号 -> 选择命名空间/权限
增加多处悬浮提示
所有的资源列表页的字段名增加悬浮提示,更适应屏幕较小的用户
工作负载里的日志入口容器名增加悬浮提示,更适应屏幕较小的用户
运维能力相关
推荐:日志采集支持根据日志样例自动提取正则表达式
当在日志采集规则中选择单行完全正则、多行完全正则的提取模式时,可根据用户自己的日志样例自动生成正则表达式,并自动提取相应的键值对,无需用户自己去学习并配置正则表达式
使用方式:1.集群运维 -> 2.日志规则 -> 3.新建 -> 4.输入日志采集规则名字 -> 5.提取方式选取“单行-完全正则” -> 6.输入日志样例 -> 7.点击正则表达式自动生成 -> 8.移动光标选取需要被正则的字符串 -> 9.输入key -> 10.确认
推荐:日志采集支持根据日志样例自动验证是否可正常提取日志
对于用户自己填写的正则表达式、分隔符等,支持按照用户日志样例进行验证,自动提取所有 value,以验证是否可以正常解析日志,避免在检索日志时发现表达式配置错误。
使用方式:1.集群运维 -> 2.日志规则 -> 3.新建 -> 4.输入日志采集规则名字 -> 5.提取方式选取“单行-完全正则” -> 6.输入日志样例 -> 7.手动输入正则表达式 -> 8. 验证
日志采集支持多行正则提取模式
支持多行正则的解析模式(适用于 java 程序等多行日志以键值去检索日志的需求)
注意:使用多行正则提取模式需要联系后端升级采集组件版本
使用方式:新建日志采集规则->第二步提取模式中选择“多行-完全正则模式”
托管 Prometheus 支持新加坡、弗吉尼亚等地域
云原生监控[10](托管 Prometheus)灰度上线新加坡/弗吉尼亚等地域,欢迎使用。
总结
Kubernetes 本身功能强大,但模块复杂,上手成本较高。TKE 致力于功能和体验的升级,如果您有任何功能和体验上的建议,欢迎在留言中提出,我们将随机抽选三位留言者,送上腾讯周边小牛仔一只。
参考资料
[1]
通过 LB 直连 Pod 提升性能: 【https://cloud.tencent.com/document/product/457/41897】
[2]
集群原地升级: 【https://cloud.tencent.com/document/product/457/32192】
[3]
虚拟节点:【 https://cloud.tencent.com/document/product/457/53027】
[4]
动态调度器: 【https://cloud.tencent.com/document/product/457/50843】
[5]
容器服务产品动态: 【https://cloud.tencent.com/document/product/457/41088】
[6]
API文档: 【https://cloud.tencent.com/document/product/457/36707】
[7]
HostAliases: 【https://kubernetes.io/zh/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/】
[8]
lifecycle: 【https://kubernetes.io/zh/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/】
[9]
subPathExpr:【 https://kubernetes.io/zh/docs/concepts/storage/volumes/#using-subpath-expanded-environment】
[10]
云原生监控: 【https://cloud.tencent.com/document/product/457/49889】
往期精选推荐
- 一篇文章带你搞懂 etcd 3.5 的核心特性
- 云上618,腾讯云容器助力1.3折起
- 腾讯TencentOS 十年云原生的迭代演进之路
- kubernetes 降本增效标准指南| 资源利用率提升工具大全
- 在 TKE 中使用 Velero 迁移复制集群资源