如何通过自动化Kubernetes集群管理容器

简介:

许多开发者已经求助于Docker容器来实现云端和本地的新应用迭代时的一致性,而且很多应用都要依赖多个Docker容器的编排。而围绕着容器集的启动以及为了让它们能够协作而连带的相关设置和配置又引发了一系列新的挑战。

为了弥补这一差距,软件产业一直在向容器管理系统Kubernetes靠拢,它承担了生态体系的职能,实现对容器集的自动化部署。在旧金山举行的KubeCon会议上,专家们讨论了其中一些基于Kubernetes的集群自动化部署的最佳实践和工具。

Univa工程总监Cameron Brunner说创建Kubernetes有很多很好的工具,但对一致的集群自动化部署却没有好的路径。“我们喜欢把硬件当作家畜来看待,” Brunner说:“这个我们在app上面一直都是这么听说的。但把你的硬件当作宠物会导致令人不快的内部管理问题。”

Univa内部大约有5个集群在跑Kubernetes,每一个都包括多个节点。有一条可靠的工具链有助于快速生成符合一致性的Kubernetes集群,快到能够在数分钟内开发和启动。

Brunner说组织需要应对一下问题才能生成一个一致可靠的Kubernetes集群:

  1. 从什么样的基础操作系统开始?
  2. 该操作系统是怎么部署和配置的?
  3. Kubernetes打算怎样安装和配置?

幸运的是,环境中有许多工具支持这一过程,Brunner说。像Atomic和CoreOS这样的不变操作系统已经变得相当稳定。预引导执行环境(PXE boot)未来启动技术可以简化部署。Cloud-Init是一个很好的启动时配置工具。

建立一致性

Brunner建议要一直通过网络启动你的硬件。这可以在机器出问题或需要升级时快速进行服务开通的再次准备。PXE启动有助于简化这一过程。理想情况下,好的做法是有一个工具去动态生成PXE,而这个东西不是跟PXE一起的。

安装不变的操作系统也是一个好的做法。这可以在数据中心做出一致的软件集和一致的环境。Brunner说:“这降低了总体的管理复杂性,理解集群中发生的事情更容易。”

在本地托管容器镜像也是好想法。Brunner建议要有一个本地库。另一个好做法是用Cloud-Init管理配置。这样把所有东西放在一个地方会更简单,同时还能有一个不变的OS。这可以用Systemd来集成,完成证书登记、密钥提取等辅助操作,从而建立一条系统启动操作的流水化的工作流。

AWS自动化Kubernetes

旧金山的程序员Jimmy Cuadra说,在AWS上面以一致的方式部署Kubernetes集群是个挑战。他说,“操作生产集群这个东西我不敢信任,哪怕我尊重Kubernetes团队的艰苦工作。对于我们这些需要管理自己集群的人来说,我们需要更健壮的东西。”

Cuadra说,对于在托管应用上面运行来说,Google Container Engine是个好的选择。但在AWS上面进行集群的自动化部署需要更健壮的办法。该问题部分在于与集群的声明式配置工具相关的大多数信息已经过时或包含有失效链接。Cuadra希望能够利用声明式配置文件,在Git上登记生成集群。

Cuadra建议用Hashicorp的Terraform。它允许组织使用声明式配置语言去买搜狐资源以及云基础设施的状态,从而匹配Git库里面的东西。

控制配置复杂性

部署Kubernetes集群方面有很多服务开通问题,这些不是Terraform容易解决的。需要有特别的配置设置来描述容器间相互对话的不同。还要有其他的设置来指定如何对Kubernetes API进行鉴权,给团队不同的人提供分布式访问证书。保持多个Kubernetes实现的状态的工作流也需要管理。

为了填补这一差距,Cuadra开发了一个名为KAWS的开源工具,它可以更容易地指定基础设施为代码,且内置一个域名系统。它还生成Kubernetes访问证书,并可以安全地把它分发出去。KAWS是用Rust编程语言开发的。

自动化Kubernetes部署的过程从KAWS库(基本上就是一个创建状态的Git库)的创建开始。它还包括了一个密钥导出命令,可以管理团队成员的公钥。这样就可以无需暴露各人私钥的情况下管理用户访问了。Cuadra说此类自动化办法使得在10分钟内筹划和部署一个新的Kubernetes集群成为可能。


本文作者:佚名

来源:51CTO

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1323 108
|
9月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
807 115
|
9月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
965 3
|
12月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
780 2
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
8月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
692 1
|
8月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
498 89
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多