kubernetes ansible 快速构建

简介: kubernetes ansible 快速构建


网络异常,图片无法展示
|

项目受 kubeasz 启发,考虑使用二进制进行安装的童鞋可以参考这个项目。kubeadm-ha 使用 kubeadm 进行高可用 kubernetes 集群搭建,利用 ansible-playbook 实现自动化安装,既提供一键安装脚本,也可以根据 playbook 分步执行安装各个组件。

项目特性:

     

  • 项目特性: 不受国内网络限制、所有组件使用 kubelet 托管、多 master 高可用、tls 双向认证、自定义 tls 证书有效期、RBAC 授权、支持 Network Policy
  • 相关支持:

安装须知:

硬件系统要求

  • Master 节点:2c2g+
  • Worker 节点:2c4g+

软件系统要求

Kube-apiserver 负载模式

本地负载均衡

该负载均衡模式是在节点本地部署一个负载均衡器,节点本地所有需要链接 apiserver 的组件均通过本地负载均衡器进行访问。

  • 优点:兼容所有云;无额外的网络消耗(共用主机 network namespace);不会出现 lb 宕机而整个集群崩溃的情况。
  • 缺点:集群外需要链接 apiserver 无法做到高可用(除非再搭建一套负载均衡);节点本地负载均衡器宕机则该节点无法正常工作;添加或删除 master 节点会涉及所有节点更新负载均衡器配置(当然不更新也是可以的)。
+------------------------+                +------------------------+|        master-A        |                |        master-B        |+------------------------+                +------------------------+|          nginx         +-------+-------->       apiserver        |+-----^------+------^----+       |        +-----------^------------+|     |      |      |    |       |        |           |            |+-----+----+ | +----+----+       |        +---------+ | +----------+|controller| | |scheduler|       |        |scheduler| | |controller|+----------+ | +---------+       |        +----+----+ | +-----+----+|            |           |       |        |    |      |       |    |+------------v-----------+       |        +----v------+-------v----+|        apiserver       <-------+--------+         nginx          |+------------------------+       |        +------------------------+                                 |          >----------------------^----------------------<          |                      |                      |+---------+----------+ +---------+----------+ +---------+----------+|       nginx        | |       nginx        | |       nginx        |+---^-----------^----+ +---^-----------^----+ +---^-----------^----+|   |           |    | |   |           |    | |   |           |    |+---+---+ +-----+----+ +---+---+ +-----+----+ +---+---+ +-----+----+|kubelet| |kube-proxy| |kubelet| |kube-proxy| |kubelet| |kube-proxy|+-------+ +----------+ +-------+ +----------+ +-------+ +----------+|                    | |                    | |                    |+--------------------+ +--------------------+ +--------------------+|       node-A       | |       node-B       | |       node-C       |+--------------------+ +--------------------+ +--------------------+

VIP 负载均衡

该负载均衡模式是在集群外搭建一个主备负载,虚拟 IP(VIP)飘在这些节点上,当节点挂掉虚拟 IP(VIP)会迅速转移到正常工作的节点上,该模式常见的组合即为:HAproxy + keepalived。

  • 优点:集群内外链接 apiserver 均为高可用。
  • 缺点:公有云无法使用;额外的网络消耗;所有 node 的网络 I/O 都会高度集中于一台机器上(VIP),一旦集群节点增多,pod 增多,单机的网络 I/O 迟早是网络隐患;lb 宕机整个集群崩溃(当然这种情况很少)。
+----------------------+                  +----------------------+  |       master-A       |                  |        master-B      |  +----------------------+                  +----------------------+  |       apiserver      <---------+-------->        apiserver     |  +----------------------+         |        +----------------------+  |                      |         |        |                      |  +----------+ +---------+         |        +---------+ +----------+  |controller| |scheduler|         |        |scheduler| |controller|  +----+-----------+-----+         |        +------+----------+----+       |           |               |               |          |v------v-----------v  >------------^------------<  v----------v------v|                     |                         |                    || +-------------------+-------------------------+------------------+ || |keepalived|    |HAproxy|                 |HAprox |   |keepalived| || +----------+    +-------+                 +-------+   +----------+ || |                       |       VIP       |                      | || |         LB-A          |                 |          LB-B        | || +-----------------------+--------^--------+----------------------+ ||                                  |                                 |>---->----------->---------->------^----<----------<-----------<-----<     |           |          |           |          |           | +---+-----------+----+ +---+-----------+----+ +---+-----------+----+ |kubelet| |kube-proxy| |kubelet| |kube-proxy| |kubelet| |kube-proxy| +-------+ +----------+ +-------+ +----------+ +-------+ +----------+ |                    | |                    | |                    | +--------------------+ +--------------------+ +--------------------+ |       node-A       | |       node-B       | |       node-C       | +--------------------+ +--------------------+ +--------------------+

集群安装

节点信息

安装 Ansible 运行环境

# 任意节点上安装 Ansible 运行环境sudo ansible/install.sh

集群规划

参考本项目 example 文件夹下的主机清单文件(ansible inventory),修改各机器的访问地址、用户名、密码,并维护好各节点与角色的关系。文件中配置的用户必须是具有 root 权限的用户。项目预定义了 6 个例子,请完成集群规划后进行修改,生产环境建议一个节点只是一个角色。

  • 搭建集群后有以下两种“样式”显示,请自行选择:
    样式一
    NAME STATUS ROLES AGE VERSION 192.168.56.11 Ready control-plane,etcd,master,worker 7m25s v1.20.6 192.168.56.12 Ready control-plane,etcd,master,worker 5m18s v1.20.6 192.168.56.13 Ready control-plane,etcd,master,worker 5m18s v1.20.6 192.168.56.14 Ready worker 4m37s v1.20.6
    样式二
    NAME STATUS ROLES AGE VERSION node1 Ready control-plane,etcd,master,worker 7m25s v1.20.6 node2 Ready control-plane,etcd,master,worker 5m18s v1.20.6 node3 Ready control-plane,etcd,master,worker 5m18s v1.20.6 node4 Ready worker 4m37s v1.20.6
    对应的 ansible inventory 配置文件示例如下:

部署集群

  • 可选: 升级内核,默认安装集群是不会升级内核的,若需升级内核,请执行(内核升级完成后请手动重启所有节点):
    ansible-playbook -i example/hosts.m-master.ip.ini 00-kernel.yml
  • 一句命令拥有一个高可用 kubernetes 集群:
    基本配置执行
    ansible-playbook -i example/hosts.m-master.ip.ini 90-init-cluster.yml
    高级配置执行,注意: 如果安装集群时使用高级配置则以后所有操作都需将 -e @example/variables.yaml 参数添加在 ansible-playbook 命令中
    ansible-playbook -i example/hosts.m-master.ip.ini -e @example/variables.yaml 90-init-cluster.yml
    本项目所有可配置项都在 example/variables.yaml 文件中体现,需自定义配置时删除配置项前注释符即可。
    example/hosts.m-master.ip.ini 文件中与 example/variables.yaml 变量值冲突时, example/variables.yaml 文件中的变量值优先级最高。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同实践
【5月更文挑战第2天】随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性与效率的关键。本文将深入探讨如何利用Ansible作为配置管理工具,结合Kubernetes容器编排能力,共同打造一个高效、可靠的自动化运维体系。通过剖析二者的整合策略及具体操作步骤,为读者提供一套提升运维效率、降低人为错误的实用解决方案。
|
3天前
|
机器学习/深度学习 运维 持续交付
构建高效自动化运维体系:Ansible与Docker的完美结合构建高效机器学习模型的五大技巧
【4月更文挑战第30天】 在当今快速发展的云计算和微服务架构时代,自动化运维已成为维持系统稳定性和提高效率的关键。本文将探讨如何通过结合Ansible和Docker技术构建一个高效的自动化运维体系。文章不仅介绍了Ansible与Docker的基本原理和优势,还详细阐述了如何整合这两种技术以简化部署流程、加强版本控制,并提高整体运维效率。通过案例分析,我们将展示这一组合在实际环境中的应用效果,以及它如何帮助企业实现持续集成和持续部署(CI/CD)的目标。 【4月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是获取洞察力和预测未来趋势的关键步骤。本文将分享五种实用的技巧,帮助数
|
4天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同策略
【4月更文挑战第29天】 在当今快速迭代的软件开发环境中,自动化运维成为了确保部署效率和稳定性的关键。本文深入探讨了如何通过Ansible和Kubernetes的集成来实现高效的自动化配置管理与容器编排。文章首先介绍了Ansible与Kubernetes各自的特点及优势,随后详细阐述了它们在自动化运维中的互补作用,并提供了一个实用的集成方案。通过案例分析,验证了该策略在提高部署速度、降低人为错误以及增强系统可靠性方面的有效性。最后,讨论了实施过程中可能遇到的挑战和解决思路。
|
4天前
|
运维 Kubernetes 安全
构建高效自动化运维体系:Ansible与Kubernetes的协同实践
【4月更文挑战第29天】 在当今快速迭代的软件发布周期中,自动化已成为维护大规模服务部署的关键。本文聚焦于将Ansible和Kubernetes结合使用,构建一个灵活、可扩展的自动化运维体系。通过分析两者的技术特性及互补优势,我们将探讨如何优化配置管理流程,实现持续集成和持续部署(CI/CD),并确保系统的稳定性与安全性。此研究不仅为读者提供一套行之有效的运维解决方案,同时也为未来运维技术的发展提供了参考方向。
|
4天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:Ansible与Kubernetes的完美结合
【4月更文挑战第29天】 在当今快速迭代的IT环境中,自动化已成为提高运维效率、减少人为错误的关键。本文将探讨如何通过Ansible和Kubernetes的结合来构建一个高效的自动化运维体系。文章首先分析了Ansible作为配置管理工具的优势,然后讨论了Kubernetes在容器编排领域的领导地位,最后详细阐述了如何将两者融合以实现更灵活、可扩展的自动化策略。
|
4天前
|
运维 安全 数据安全/隐私保护
构建高效自动化运维体系:Ansible与Docker的协同实践
【4月更文挑战第29天】 在当今IT基础设施快速演变的背景下,自动化成为维护系统稳定性和提升运维效率的关键。本文将深入探讨如何利用Ansible和Docker技术搭建一个高效的自动化运维体系。通过剖析Ansible的配置管理功能与Docker容器化的优势,我们展示了一种能够实现快速部署、轻松管理和无缝扩展的自动化解决方案。文章还将分享一系列优化策略,以期帮助读者构建出既灵活又强大的自动化工具链。
|
4天前
|
Kubernetes 监控 Docker
|
5天前
|
运维 Kubernetes 负载均衡
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【4月更文挑战第28天】随着云计算和微服务架构的普及,自动化运维已成为提升系统稳定性、效率及快速响应市场变化的关键。本文将探讨如何利用容器化技术Docker和容器编排工具Kubernetes来构建一个高效、可扩展的自动化运维体系。我们将分析该技术栈的优势,并通过一系列实践案例,展示如何优化现有的运维流程,实现资源的最大化利用和风险的有效控制。
|
6天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:以Kubernetes为核心
【4月更文挑战第27天】 在当今数字化转型的浪潮中,企业急需构建灵活、可扩展的应用来应对不断变化的市场需求。云原生技术以其独特的优势应运而生,成为推动现代应用开发和部署的重要力量。本文深入探讨了云原生的核心组件之一——Kubernetes,解析其如何通过容器编排优化资源利用,提高应用的弹性和可维护性。同时,文章将展示如何在云平台上实现高效的服务发现、自动扩缩容以及持续集成和持续部署(CI/CD),进一步阐述云原生架构下的最佳实践和面临的挑战。
|
6天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。