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升降的话,是重新部署一套新的再去迁移还是可以直接在线升降呢?