文章目录
前言
本文将带大家一起通过二进制搭建Kubernetes v1.20,因为实验内容较多,故分成上、中、下三篇文章进行展示。
单master集群架构图
目前Kubernetes最新版本是v1.24,但大部分公司一般不会使用最新版本。
目前公司使用比较多的:老版本是v1.15,因为v1.16改变了很多API接口版本,新版本使用比较多的是v1.18、v1.20。
一、实验环境
注意:生产环境中,etcd集群和master、node节点都应该部署在不同的机器上,此处为了实验方便,将三台etcd节点分别部署在了master和node节点上了。
k8s集群master01:192.168.192.11,kube-apiserver、kube-controller-manager、kube-scheduler、etcd
k8s集群master02:192.168.192.12
k8s集群node01:192.168.192.13 kubelet、kube-proxy、docker
k8s集群node02:192.168.192.14
etcd集群节点1:192.168.192.11 etcd
etcd集群节点2:192.168.192.13
etcd集群节点3:192.168.192.14
负载均衡nginx+keepalive01(master):192.168.192.15
负载均衡nginx+keepalive02(backup):192.168.192.16
二、部署etcd集群
2.1 操作系统初始化配置
所有节点进行操作。
#关闭防火墙,清除防火墙规则
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#-X可以清除一些自定义的链表规则
#关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
#--------关闭swap-------------
swapoff -a #临时关闭交换分区
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭交换分区
#------根据规划设置主机名------
hostnamectl set-hostname master01 && su
hostnamectl set-hostname master02 && su
hostnamectl set-hostname node01 && su
hostnamectl set-hostname node02 && su
#--------修改/etc/hosts文件------
#添加主机名和IP的映射关系
vim /etc/hosts
192.168.192.11 master01
192.168.192.12 master02
192.168.192.13 node01
192.168.192.14 node02
#-----------调整内核参数--------------
vim /etc/sysctl.d/k8s.conf
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
#开启路由转发功能
sysctl --system #加载系统的内核参数
#-----------时间同步-------------------
yum install ntpdate -y
ntpdate time.windows.com
#将时间同步加入计划性任务,每30分钟执行一次
crontab -e
*/30 * * * * /usr/sbin/ntpdate time.windows.com
2.2 部署 etcd 集群(分布式键值对数据库)
etcd是Coreos团队于20