高可用Kubernetes集群-16. ansible快速部署
说明
本文档指导采用二进制包的方式快速部署高可用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版本 |
逻辑拓扑

- 集群服务器数量建议:3;文档以172.30.200.51~53示例,172.30.200.50为vip;
- 为减少服务器数量,采用all-in-one的方式,各角色服务融合部署;
- 前端采用haproxy+keepalived做高可用;
- k/v数据库采用etcd集群;
- kubernetes-master角色组件:kube-apiserver,kube-controller-manager,kube-scheduler;
- 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快速部署的更多相关文章
- 搭建高可用kubernetes集群(keepalived+haproxy)
序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...
- 高可用Kubernetes集群原理介绍
■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...
- 高可用Kubernetes集群-3. etcd高可用集群
五.部署高可用etcd集群 etcd是key-value存储(同zookeeper),在整个kubernetes集群中处于中心数据库地位,以集群的方式部署,可有效避免单点故障. 这里采用静态配置的方式 ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
- 基于saltstack自动化部署高可用kubernetes集群
SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...
- 高可用Kubernetes集群-1. 集群环境
参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...
- 使用Kubeadm搭建高可用Kubernetes集群
1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...
- 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理
参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...
- 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台
参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...
随机推荐
- 1001. [BJOI2006]狼抓兔子【最小割】
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- msf提权基础(一)
令牌(token)相当于系统的临时密钥(账号及密码) 加载incognito模块 meterpreter> use incognito meterpreter > list_tokens ...
- python面试题库——1Python基础篇
第一部分 Python基础篇(80题) 为什么学习Python? 语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做 Python和Ja ...
- 列表中不限制宽度,hover时,字体font-weight:bold,防止抖动
项目一个小问题困扰了很久,在一个没有限制宽度的列表容器中,如果给hover时,给字体➕'font-wieght:bold'容器就会变宽,然后移动的下一个容器,就会出现抖动,这样很是影响用户体验,于是在 ...
- python获取网站http://www.weather.com.cn 城市 8-15天天气
参考一个前辈的代码,修改了一个案例开始学习beautifulsoup做爬虫获取天气信息,前辈获取的是7日内天气, 我看旁边还有8-15日就模仿修改了下.其实其他都没有变化,只变换了获取标签的部分.但是 ...
- 关于ESP8266EX的一些资料
乐鑫智能互联平台 ESP8266EX 拥有高性能无线 SOC,给移动平台设计师带来福⾳音,它以最低成本提供最大实用性,为 WiFi 功能嵌入其他系统提供无限可能. ESP8266EX 是⼀一个完整且⾃ ...
- Mac环境下安装配置Hadoop伪分布式
伪分布式需要修改5个配置文件(hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop) 第一个:hadoop-env.sh #vim hadoop-env.sh #第25行,由于新 ...
- 1549: Navigition Problem (几何计算+模拟 细节较多)
1549: Navigition Problem Submit Page Summary Time Limit: 1 Sec Memory Limit: 256 Mb Su ...
- Node学习笔记之模块实现
一.模块分类 由Node提供的模块,称为核心模块:部分核心模块在Node源代码的编译过程中,编译进了二进制执行文件.在node进程启动时,该部分就直接加载进内存,文件定位和编译执行的步骤可以省略掉,并 ...
- 系统重装后恢复Oracle数据库
这周装系统的固态盘坏了,固态硬盘用到坏也是第一次碰到....只能新买个硬盘重装系统了.到了Oracle数据库恢复那一步了,其实很简单.只要没把数据库安装路径放在系统盘就行.*^____^* 先找到重装 ...