kubernetes ansible 快速构建

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 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 文件中的变量值优先级最高。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
17天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
2月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
84 7
|
1月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
61 6
|
7月前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
7月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
7月前
|
Kubernetes Cloud Native 开发者
构建高效的云原生应用:Docker与Kubernetes的完美搭档
【5月更文挑战第29天】 在现代软件开发领域,"云原生"这一术语已经成为高效、可扩展和弹性的代名词。本文将深入探讨如何通过Docker容器化技术和Kubernetes集群管理工具实现云原生应用的构建和管理。我们将剖析Docker的核心原理,揭示其轻量级和易于部署的特点,并进一步探索Kubernetes如何为这些容器提供编排,保证应用的高可用性与自动扩缩容。文章不仅讨论了二者的技术细节,还提供了实践案例,帮助开发者理解并运用这些技术构建和维护自己的云原生应用。
|
3月前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
3月前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
148 2
|
4月前
|
存储 Kubernetes 调度
通过重新构建Kubernetes来实现更具弹性的容器编排系统
通过重新构建Kubernetes来实现更具弹性的容器编排系统
63 8
|
4月前
|
运维 监控 持续交付
构建高效自动化运维体系:Ansible与Docker的协同实践
【7月更文挑战第42天】 在当今快速发展的云计算和微服务架构时代,自动化运维已成为提升效率、确保系统稳定性的关键。本文将探讨如何利用Ansible这一强大的自动化工具与Docker容器技术相结合,搭建一个高效、可靠的自动化运维体系。文章首先简述了自动化运维的必要性和Ansible与Docker的基本概念,随后详细介绍了两者结合的优势,并通过实际案例分析展示了如何实现自动化部署、管理和扩展应用服务。通过阅读本文,读者将获得一套可行的自动化运维解决方案,以应对日益复杂的IT环境挑战。
下一篇
无影云桌面