30.5 Kubernetes集群搭建
准备4台虚拟机,以二进制方式,通过ansible脚本,自动化搭建一个多主多节点的高可用集群。
Ansible脚本安装kubernetes集群:https://github.com/gjmzj/kubeasz
kubernetes官方github地址:https://github.com/kubernetes/kubernetes/releases
环境准备
- 软硬件限制:
1. CPU和内存 master:至少1c2g,推荐2c4g;node:至少1c2g
2. linux系统 内核版本3.10以上,推荐CentOS7或RHEL7
3. docker 至少1.9版本,推荐1.12+
4. etcd 至少2.0版本,推荐3.0+
- 节点规划:
deploy节点---数量1:运行这份ansible脚本的节点
etcd节点---数量3:注意etcd集群必须是1,3,5,7...奇数个节点
master节点---数量2:根据实际集群规模可以增加节点数,需要额外规划一个master VIP
lb节点---数量2:负载均衡节点2个,安装haproxy和keepalived
node节点---数量3:真正应用负载的节点,根据需要提升机器配置和增加节点数
- 机器规划:
ip | 主机名 | 角色 |
---|---|---|
192.168.30.128 | master | deploy、master1、lb1、etcd |
192.168.30.129 | node1 | etcd、node |
192.168.30.130 | node2 | etcd、node |
192.168.30.150 | master2 | master2、lb2(master) |
192.168.30.160 | vip |
- 准备工作:
4台机器,全部执行
# yum install -y epel-release
# yum update -y
# yum install -y python
开始安装
- deploy节点安装和准备ansible:
[root@master ~]# yum install git python-pip -y
[root@master ~]# pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
[root@master ~]# pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
- deploy节点配置免密码登录:
[root@master ~]# ssh-keygen
[root@master ~]# for ip in 128 129 130 150 ; do ssh-copy-id 192.168.30.$ip; done
[root@master ~]# for ip in 128 129 130 150 ; do ssh 192.168.30.$ip; done #登录验证
- deploy节点上编排k8s:
[root@master ~]# git clone https://github.com/gjmzj/kubeasz.git
[root@master ~]# mkdir -p /etc/ansible
[root@master ~]# mv kubeasz/* /etc/ansible/
- 下载二进制文件:
地址:百度云链接,根据自己所需版本,下载对应的tar包,下载解压到/etc/ansible/bin
目录。这里我下载1.11版本。
[root@master ~]# tar zxf k8s.1-11-6.tar.gz
[root@master ~]# mv bin/* /etc/ansible/bin/
- 配置集群参数:
[root@master ~]# cd /etc/ansible && cp example/hosts.m-masters.example hosts
[root@master ansible]# vim hosts #根据实际情况修改
[root@master ansible]# ansible all -m ping #验证是否节点正常
192.168.30.150 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.30.129 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.30.130 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.30.128 | SUCCESS => {
"changed": false,
"ping": "pong"
}
- 创建证书和安装准备:
[root@master ansible]# ansible-playbook 01.prepare.yml