k8s 一、部署之前的装备工作 - youngperson/study-100 GitHub Wiki
00-集群规划
高可用集群所需节点的配置
- 部署节点------x1 : 运行这份 ansible 脚本的节点
- etcd节点------x3 : 注意etcd集群必须是1,3,5,7...奇数个节点
- master节点----x2 : 根据实际集群规模可以增加节点数,需要额外规划一个master VIP(虚地址)
- lb节点--------x2 : 负载均衡节点两个,安装 haproxy+keepalived
- node节点------x3 : 真正应用负载的节点,根据需要提升机器配置和增加节点数
生产环境使用建议一个节点只是一个角色,这里演示环境将节点绑定多个角色。项目预定义了3个例子,请修改后完成适合你的集群规划。
自己测试的时候(Mac机器为部署节点、etcd1个、master1个、lb1个、node1个)
节点信息(测试)
| 节点名称 | Ip |
|---|---|
| deploy | 192.168.66.5 |
| etcd | 192.168.66.10 |
| master | 192.168.66.20 |
| lb | 192.168.66.30、192.168.66.31 |
| node | 192.168.66.40 |
| 集群MASTER IP(LB节点VIP地址) | 192.168.44.10 |
1.基础系统配置(建议)
- 可以选择最小化安装Ubuntu 16.04 server或者CentOS 7 Minimal
- 配置好基础的网络、更新源、SSH登陆
- 推荐内存2G/硬盘30G以上
2.在每个节点安装依赖的工具
# 文档中脚本默认均以root用户执行
# 安装 epel 源并更新
yum install epel-release -y
yum update
# 安装python
yum install python -y
3.在部署节(deploy)点上安装好ansible等相关的工具
# CentOS 7
yum install git python-pip -y
# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速)
#pip install pip --upgrade
#pip install ansible
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
3-1.在部署(deploy)节点配置免密码登陆其它节点
- ssh-keygen -t rsa -b 2048 回车 回车 回车
- 批量复制公钥可以写个脚本去
- ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
4.在在部署(deploy)节点编排k8s安装
4.1下载源码
- mkdir -p /etc/ansible
- sudo chmod -R 777 /etc/ansible(防止在Mac下没有权限)
- 从发布页面 https://github.com/gjmzj/kubeasz/releases 下载源码解压到同样目录
- mv kubeasz/* /etc/ansible
4.2a 下载二进制文件
- 下载二进制文件 请从分享的百度云链接,下载解压到/etc/ansible/bin目录,如果你有合适网络环境也可以按照/down/download.sh自行从官网下载各种tar包
- tar zxvf k8s.1-9-8.tar.gz # 以安装k8s v1.9.8为例
- mv bin/* /etc/ansible/bin
4.2b [可选]下载离线docker镜像
- 服务器使用内部yum源/apt源,但是无法访问公网情况下,请下载离线docker镜像完成集群安装;从百度云盘把basic_images_kubeasz_x.y.tar.gz 下载解压到/etc/ansible/down 目录
- tar zxvf basic_images_kubeasz_0.2.tar.gz -C /etc/ansible/down
4.3 配置集群参数
-
4.3.1 必要配置:cd /etc/ansible && cp example/hosts.m-masters.example hosts, 然后实际情况修改此hosts文件
-
4.3.2 可选配置,初次使用可以不做修改,详见配置指南
-
4.3.3 验证ansible 安装:ansible all -m ping 正常能看到节点返回 SUCCESS
-
4.4 开始安装 如果你对集群安装流程不熟悉,请阅读项目首页 安装步骤 讲解后分步安装,并对 每步都进行验证
# 分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
# 一步安装
#ansible-playbook 90.setup.yml
- [可选]对集群所有节点进行操作系统层面的安全加固 ansible-playbook roles/os-harden/os-harden.yml,详情请参考os-harden项目
参考链接
疑问
为什么需要保持各个节点的时区和时间同步? NTP或者chrony
生成环境使用建议一个节点只是一个角色
etcd、master、lb、node节点是否都需要在同一个网段下面?
随着业务发展,如果要在扩容一台ETCD、master、node是否好扩容呢?
网络这块想要从flanel切换到别的,怎么换?
k8s升降的话,是重新部署一套新的再去迁移还是可以直接在线升降呢?