说明

本文档指导采用二进制包的方式快速部署高可用kubernetes集群。

脚本托管:k8s-ansible(持续更新)

参考:高可用kubernetes集群

组件版本

组件 版本 备注
centos 7.5 linux内核版本不低于3.10,本文档基于centos发行版本
haproxy 1.8.13 版本可选,本文档默认采用1.8.13版本
keepalived 2.0.6 版本可选,本文档默认采用2.0.6版本
docker 18.06.1.ce 版本可选,本文档默认采用18.06.1.ce版本
cfssl R1.2 版本可选,本文档默认采用R.12版本
etcd v3.3.9 版本可选,本文档默认采用v3.3.9版本
flannel v0.10.0 版本可选,本文档默认采用v0.10.0版本
kubernetes v1.11.2 版本可选,本文档默认采用v1.11.2版本
kube-dns 1.14.10 本文档默认采用1.14.10版本
dashboard 1.8.3 本文档默认采用1.8.3版本
heapster v1.5.4 本文档默认采用v1.5.4版本
influxdb v1.5.2 本文档默认采用v1.5.2版本
grafana v5.0.4 本文档默认采用v5.0.4版本

逻辑拓扑

  1. 集群服务器数量建议:3;文档以172.30.200.51~53示例,172.30.200.50为vip;
  2. 为减少服务器数量,采用all-in-one的方式,各角色服务融合部署;
  3. 前端采用haproxy+keepalived做高可用;
  4. k/v数据库采用etcd集群;
  5. kubernetes-master角色组件:kube-apiserver,kube-controller-manager,kube-scheduler;
  6. kubernetes-minion角色组件:kubelet,kube-proxy。

使用说明

环境准备

  • 准备1台ansible-server(主控端):

    • 与ansible-client可通信
    • 可访问互联网(如果不可访问,可提前下载相关package上传到指定目录,可参考"~/k8s-ansible/download.sh");
    • 理论上无硬件要求。
  • 根据规划,准备若干台宿主机作为ansible-client(被控端),本文档宿主机数量为3:
    • 物理机或虚拟机;

    • 最小化安装,设置IP地址,启动ssh服务即可

    • 宿主机可访问互联网,否则需要通过其他方式初始化宿主机(如采用虚拟机时,可通过镜像的方式统一初始化,初始化步骤参考"~/k8s-ansible/playbooks/roles/initenv/tasks/main.yaml");

    • 配置如下:

      IP CPU(cores) Memory(GB) Remark
      172.30.200.51 4 4 根据实际部署情况酌情调整资源用量
      172.30.200.52 4 4
      172.30.200.53 4 4

操作指南

以下操作若无特别说明,均在选定的ansible-server以root账户执行。

1. 安装ansible-server

yum install ansible -y

2. 设置ansible-server免密登陆ansible-client

ansible采用无代理的方式操作被控端,默认使用ssh协议对被控端进行管理,为避免下发指令时输入目标主机密码,采用签名证书的方式可ssh免密登陆目标主机。

  • ssh-keygen:生成秘钥(含公钥/私钥)时,使用默认设置,回车即可;

  • ssh-copy-id:分发公钥到所有目标主机时需要目标主机密码,注意for循环中的ansible-client格式。

    ssh-keygen -t rsa
    for i in "172.30.200.51" "172.30.200.52" "172.30.200.53"; do ssh-copy-id root@$i; done

3. 拉取安装脚本

重要:在运行账号的"~/"目录下拉取安装脚本

# 安装或升级git
yum install git -y # 拉取安装脚本,注意脚本的保存目录
cd ~
git clone https://github.com/Netonline2016/k8s-ansible.git

4. 下载安装包

为避免安装过程中,联网下载安装包超时或等待时间过长,提前下载相应package,并放置于对应路径下,此过程已整理为shell脚本,可直接运行。

如对package有版本要求,可在脚本中修改,请见"~/k8s-ansible/download.sh"脚本注释。

sh ~/k8s-ansible/download.sh

5. 根据规划定义主机变量

涉及文件,修改请见相应文件注释:

  • ~/k8s-ansible/inventory/hosts
  • ~/k8s-ansible/inventory/group_vars/all

6. 部署高可用kubernetes集群

采用ansible playbook方式运行自动化安装。

ansible-playbook -i ~/k8s-ansible/inventory/hosts ~/k8s-ansible/playbooks/k8s-ansible.yaml

高可用Kubernetes集群-16. ansible快速部署的更多相关文章

  1. 搭建高可用kubernetes集群(keepalived+haproxy)

    序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...

  2. 高可用Kubernetes集群原理介绍

    ■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...

  3. 高可用Kubernetes集群-3. etcd高可用集群

    五.部署高可用etcd集群 etcd是key-value存储(同zookeeper),在整个kubernetes集群中处于中心数据库地位,以集群的方式部署,可有效避免单点故障. 这里采用静态配置的方式 ...

  4. 基于Containerd安装部署高可用Kubernetes集群

    转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...

  5. 基于saltstack自动化部署高可用kubernetes集群

    SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...

  6. 高可用Kubernetes集群-1. 集群环境

    参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...

  7. 使用Kubeadm搭建高可用Kubernetes集群

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  8. 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理

    参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...

  9. 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台

    参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...

随机推荐

  1. 禁用wps的云文档,恢复到清爽的状态

    wps安装完成后,默认会开启云文档功能,每次打开表格.文档都会显示乱七八糟的一些东西,很麻烦 不得已只好手动为wps“瘦身”: 在wps表格或者文档的快捷方式上右键,选择打开文件所在位置 找到一个最新 ...

  2. Golang格式化小结

    Golang的格式化使用了与c.python等语言类似的风格,但是更加丰富和通用.格式化函数在fmt包中,如:fmt.Printf,fmt.Fprintf,fmt.Sprintf,fmt.Printl ...

  3. linux下ab网站压力测试命令

    http://domain:代表压测域名.   get方法压测:        1)一般get方法压测简单,直接后缀url就ok了,参数直接挂在url后面的?a=1&b=2,         ...

  4. 将Tensor输出到文件

    ) local file = io.open('/home/xbwang/Desktop/part2original','a') ,length do number = part2[j] file:w ...

  5. mysql root密码忘记重置及相关注意事项

    1.使用mysqld_safe --skip-grant-tables跳过授权,进入mysql操作界面或者在配置文件mysqld 添加skip-grant-tables也行,找回后需要删除..恢复原样 ...

  6. 联想ERP项目实施案例分析(10):回到最初再反思IT价值

    联想ERP项目实施案例分析(10):回到最初再反思IT价值 投入上千万(未来每年的维护费也非常高),投入一年实施时间,高级副总裁亲自挂帅,各级业务部门管理者亲自负责.骨干业务人员充当区域IT实施者/推 ...

  7. 转载:【架构师之路】依赖注入原理---IoC框架

    原文地址:http://www.cnblogs.com/jhli/p/6019895.html 1 IoC理论的背景     我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象 ...

  8. 第一次作业:基于Linux 4.5的进程模型与调度器分析

    1.操作系统是怎么组织进程的? 1.1什么是线程,什么是进程: 刚接触时可能经常会将这两个东西搞混.简单一点的说,进程是一个大工程,线程则是这个大工程中每个小地方需要做的东西(在linux下看作&qu ...

  9. layui水平导航条三级

    需求 需要做一个顶部的水平导航条,有三级,展开的时候二级和三级一起展开,结果如图: 效果 一级菜单 二级标题   三级菜单 三级菜单 二级标题   三级菜单 三级菜单 一级菜单 二级标题   三级菜单 ...

  10. go基础1:Hello world与变量声明

    一.go语言版hello world package main # 指明文件属于main包 main包使用后来定义一个独立的可执行程序,而不是库main包中的main函数是特殊的,不管在什么程序中,m ...