作者:尹珉,KubeSphere Ambaasador&Contributor,KubeSphere 社区用户委员会杭州站站长。

引言

随着 Kubernetes 社区的不断发展,即将迎来 Kubernetes 1.30 版本的迭代。在早先的 1.24 版本中,社区作出一个重要决策:不再默认集成 Docker 作为容器运行时,即取消了对 Docker 的默认支持。这就像咱们家厨房换了个新灶头,虽然厨艺的本质没变,但用起来感觉肯定不一样。这篇文章就带你摸透这个变化,直击 Kubernetes 1.24+ 版本抛弃 Docker 后的影响,同时手把手教你如何借助 KubeKey 这个神器,让你在给 Kubernetes “装修升级”的过程中既稳又顺,还能把 Docker 那些贴心好用的功能保留下来。

Docker 移除带来的潜在风险分析

工具链与生态兼容性

  1. 对于大量使用 Jenkins 等 CI/CD 工具的企业而言,原先基于 Docker 的镜像构建、推送和拉取流程可能需要重构。Jenkinsfile 中的 Docker 构建步骤需调整为兼容 containerd 的方式进行,否则可能造成流水线中断。
  2. 监控系统和其他依赖于 Docker API 的周边工具需要进行改造或更换,以适应新的容器运行时环境,这涉及到了大量的验证工作和可能的二次开发成本。

开发环境一致性

开发者们习惯了在本地使用 Docker 进行快速迭代和测试,移除 Docker 后,需要重新适应 containerd 或寻找兼容 Docker API 的替代方案,以保持开发环境与生产环境的一致性。

现有运维脚本失效

许多自动化脚本、运维命令和 Helm Chart 等资源文件可能直接引用了 Docker 命令或依赖于 Docker 的特定行为,这些都需要逐步审查和适配。

升集群时手动保留 Docker 特性的成本分析

运维复杂度增加

  1. 需要在 Kubernetes 集群中手动集成第三方插件或其他兼容方案以模拟 Docker 的运行时环境,这要求运维团队具备更高的技术水平和对 Kubernetes 内部机制的深入了解。
  2. 需要密切关注 Kubernetes 更新与 Docker 兼容性之间的差异,每次升级 Kubernetes 都可能导致与 Docker 集成的部分出现问题,需要额外的时间和精力进行维护和调试。

集群规模操作成本剧增

  1. 假设面临如 100 个节点的集群时,每个节点上的容器运行时切换都需要单独进行,这意味着至少需要分别在 100 个节点上执行启停容器运行时的操作,耗费巨大的人力和时间成本。
  2. 对于大型集群,这种逐一操作的管理模式极其低效且容易出错,可能需要编写复杂的脚本或者使用批量管理工具,进一步增加实施难度。

测试验证与恢复预案

若操作过程中遇到问题,需要有完备的回滚策略和恢复预案,准备应对可能发生的各类异常状况,以防业务长时间受到影响。

总结: 因此,在 Kubernetes 1.24 之后,手动保留 Docker 特性并进行大规模节点运行时切换是一项极具挑战的任务,不仅会导致高昂的操作成本,还可能带来较大的业务风险。相比之下,寻求平滑过渡和兼容方案(如 KubeKey)成为更具性价比的选择。

什么是 Kubekey

KubeKey 是一个开源的轻量级工具,用于部署 Kubernetes 集群。它提供了一种灵活、快速、方便的方式来安装 Kubernetes/K3s、Kubernetes/K3s 和 KubeSphere,以及相关的云原生附加组件。它也是扩展和升级集群的有效工具。此外,KubeKey 还支持定制离线包(artifact),方便用户在离线环境下快速部署集群。

为什么选择 Kubekey?

KubeKey 由 Go 语言开发,使用便捷、轻量,支持多种主流 Linux 发行版。KubeKey 支持多种集群部署模式,例如 All-in-One、多节点、高可用以及离线集群部署。KubeKey 也支持支持快速构建离线安装包,加速离线交付场景下的集群交付效率。KubeKey 实现多节点并行安装,且利用 Kubeadm 对集群和节点进行初始化,极大地节省了集群部署时间,同时也遵循了 Kubernetes 社区主流集群部署方法。KubeKey 提供内置高可用模式,支持一键部署高可用 Kubernetes 集群。

升级实操

etcd 数据备份

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \
snapshot save <backup-file-location>

下载 Kubekey 工具

版本:v3.1.0-rc.2 (这个版本当前是稳定已测,即将发布 v3.1.0)。

export KKZONE=cn

支持手动下载:https://github.com/kubesphere/kubekey/releases。

curl -sfL https://get-kk.kubesphere.io | sh -

检查当前集群状态

kubectl get node -o wide

准备集群配置文件

如果创建集群时的配置文件存在,本步骤可跳过。

  1. 创建当前集群配置
./kk create config [--with-kubernetes version] [(-f | --filename) path]
  1. 填入真实集群信息

修改 configmap

  1. 修改 kubeadm-config

注意:确保配置中的 featuregate 在新版本中没有被移除。

kubectl -n kube-system edit cm kubeadm-config

  1. 修改 kubelet-config-1.23

注意:确保配置中的 featuregate 在新版本中没有被移除。

kubectl -n kube-system edit cm kubelet-config-1.23

开始升级

./kk upgrade -f sample.yaml --with-kubernetes v1.24.17 --skip-dependency-check

验证集群版本

kubectl get node -A -o wide

验证容器运行时

kubectl get nodes -o json | jq '.items[].status.nodeInfo.containerRuntimeVersion'

结尾彩蛋

正如我们在这篇文章中所揭示的,Kubernetes 1.24 版本及其后续迭代虽逐步摒弃了对 Docker 的直接依赖,但这并不意味着我们必须舍弃熟悉的 Docker 工作流。通过 KubeKey 这样的强大工具,我们可以享受到 Kubernetes 最新版本的种种改进,同时还能优雅地保留 Docker 的某些关键特性,让升级之路变得更为顺畅。勇敢拥抱变化,善用工具的力量,每一次的技术升级都将成为我们打造高效、稳定、可扩展基础设施的宝贵经验。

本文由博客一文多发平台 OpenWrite 发布!

Kubernetes 升级不弃 Docker:KubeKey 的丝滑之道的更多相关文章

  1. Centos7上安装Kubernetes集群部署docker

    一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ...

  2. eladmin-plus V2.0.0 发布,单表链式调用更丝滑

    一.项目简介 eladmin的mybatis-plus版本,单表使用链式调用,代码更简洁,调用更便捷.目前更新到2021年7月.项目基于 Spring Boot 2.4.2 . Mybatis-plu ...

  3. 使用 CSS3 打造一组质感细腻丝滑的按钮

    CSS3 引入了众多供功能强大的新特性,让设计和开发人员能够轻松的创作出各种精美的界面效果.下面这些发出闪亮光泽的按钮,很漂亮吧?把鼠标悬停在按钮上,还有动感的光泽移动效果. 温馨提示:为保证最佳的效 ...

  4. OC语言编写:为视图添加丝滑的水波纹

    先看一下最终效果图: 首先我们可以把如此丝滑的水波纹拆分一下下: 一条规律的曲线. 曲线匀速向右移动. 曲线下方的位置用颜色填充. 于是先来一条曲线吧. 对于需要产生波动如此规律的曲线,我们首先想到的 ...

  5. 让你的app体验更丝滑的11种方法!冲击手机应用榜单Top3指日可待

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专栏 一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求,这样 ...

  6. jQuery和css3控制箭头丝滑旋转

    问题: 我们经常会遇见点击一个小三角使之丝滑的旋转180度上下旋转,怎么实现呢,需要css3搭配jq 来处理 如图:1.点击前 2.点击后(效果丝滑旋转)                 1.html ...

  7. 一分钟小知识:scroll-behavior 让你的页面导航滚动更丝滑~

    中午在[掘金]潜水摸鱼,看到这一个沸点,个人已经撸出特效: 下面放上  作者 的 掘金 地址  #掘金沸点# https://juejin.im/pin/5d649eaaf265da19752533d ...

  8. 《你还在写sql语句吗?》人生苦短,进入MybatisPlus的丝滑体验

    一.发展历程 依稀记得大学期间,类中写sql语句的日子,一个sql语句占据了大部分时间,到后来hibernate的出现算是解决了这一痛点.工作 后,我们又接触到了mybatis这样的框架,瞬间感觉这个 ...

  9. 『CDN』让你的网站访问起来更加柔顺丝滑

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  10. Node更丝滑的打开方式

    Node更丝滑的打开方式 1. 使用背景 最近前端的一个项目,使用gulp作为工程化.在运行过程中出现如下错误 gulp[3192]: src\node_contextify.cc:628: Asse ...

随机推荐

  1. Intel因特尔10700k CPU的核显驱动

    下载地址: https://www.intel.cn/content/www/cn/zh/download/776137/intel-7th-10th-gen-processor-graphics-w ...

  2. 关于工业AI辅助制造(模具设计、模样生产制造环节)

    关于工业AI辅助制造(模具设计.模样生产制造环节) AI技术的具体使用场景: AI辅助模具设计: AI辅助模具安装工艺参数调整. 具体方案设想: AI辅助模具设计: 使用AI大模型对历史已有的设计方案 ...

  3. xshell打开vim后颜色异常——xshell连接ubuntu打开vim后界面覆盖一层绿色

    参考原文: https://blog.csdn.net/Blank_Shen/article/details/106527312 =================================== ...

  4. Linux环境下配置vscode的C/C++编译环境

    操作系统环境:  Linux 配置vscode的C/C++编译环境需要安装插件: 本文的配置是指在linux下不使用vscode插件中自动配置,而是采用手动编写配置文件.主要原因是插件自动生成的C/C ...

  5. 从Web服务器的攻击防御工具HttpGuard(防cc攻击等)看Web服务器的反爬虫设置 —— 如何优化爬虫的性能

    HttpGuard网址: https://github.com/centos-bz/HttpGuard 从https://vv1234.cn/archives/243.html可知,如果同个IP的访问 ...

  6. vscode下如何把缩进为2个空格的python项目改为4个空格的缩进

    最近在看老项目的代码,是python2.7年代的项目,那个时候很多的python项目都是使用2个空格,不过现在估计大多数人写python项目都是使用4个空格的了,而我看这两个空格的项目代码也是感觉十分 ...

  7. 简单易懂的BFS

    最近学习BFS,看到许多教程都用C++内置的queue,但其实还有更简单的方法. 先了解概念:BFS与DFS不同,举个例子: 我们来用DFS遍历这棵树:A.B.D.E.G.C.F 但我们用BFS遍历这 ...

  8. Problem - 616C - Codeforces

    Problem - 616C - Codeforces C. The Labyrinth 如果是直接对\(*\)去跑dfs或者bfs的话无疑是会超时的 既然如此,那我们可以去对 \(.\) 跑搜索,将 ...

  9. Telegram第三方登录步骤

    网上看到的不多,简单做个记录,本文主要对下面的文章做补充 Telegram(电报)授权登录(web)第三方 整体步骤为: 找 botFather 创建机器人 给机器人设置域名白名单,用于设置回调地址, ...

  10. 搭建MyBatis环境

    开发环境 idea .maven .MySQL.MyBatis MySQL不同版本的注意事项 1.驱动类driver-class-name MySQL 5版本使用jdbc5驱动,驱动类使用:com.m ...