Kubeadm搭建高可用K8S(一)环境准备
基于K8S官方安装工具kubeadm进行k8s高可用搭建
·
前提:自行安装VMWare
1.准备至少三套CentOS7系统,入门配置:master节点需要4G4C,worker节点需要2G2C
2.每台机器配置好静态IP
3.保证各个机器之间和宿主机之间通信没有问题
一、多master节点单node节点机器配置
集群角色 | IP | 主机名 | 安装的组件 |
---|---|---|---|
Master-1 | 192.168.74.10 | master01 | apiserver、controller-manager、scheduler、kubelet、etcd、docker、kube-proxy、keepalived、nginx、calico |
Master-2 | 192.168.74.11 | master02 | apiserver、controller-manager、scheduler、kubelet、etcd、docker、kube-proxy、keepalived、nginx、calico |
Worker-1 | 192.168.74.12 | worker01 | kubelet、kube-proxy、docker、calico、coredns |
Worker-2 | 192.168.74.13 | worker02 | kubelet、kube-proxy、docker、calico、coredns |
virtual-ip(VIP) | 192.168.74.110 |
二、各机器实验环境准备
配置虚拟机静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
配置主机名
# 每一台机器都操作
# 机器之间可以通过主机名访问
hostnamectl set-hostname master1 && bash
# 查看主机状况
hostnamectl
配置主机host文件
vim /etc/hosts
# [ip] [hostname]
192.168.74.10 master01
# 【验证】互相ping域名,能够通
ping master02
ping www.baidu.com
配置主机之间无密码登录
# 要在每一台机器上都执行,且都需要拷贝(两两相互)
# 使得机器之间可以无密码相互访问
ssh-keygen #一路回车,不输入密码
# 把本地生成的密钥文件和私钥文件拷贝到远程主机
ssh-copy-id master1
ssh-copy-id master2
ssh-copy-id worker1
ssh-copy-id -i /root/.ssh/id_rsa.pub master1
#【验证】在master1上执行
ssh root@master2
# 是否可以无密码跳转登录
ls -a #查看隐藏文件夹 .ssh
关闭交换分区swap
# 要在每一台机器上都操作
# 避免资源耗尽导致k8s异常,提升性能
#1.临时关闭
swapoff -a
#2.永久关闭:注释swap挂载,给swap这行开头加一下注释
vim /etc/fstab
/dev/mapper/centos-swap swap swap defaults 0 0
#如果是克隆的虚拟机,需要删除UUID
# 运行完毕后,查看交换分区情况,执行如下命令:
free -m
修改机器内核参数
# 要在每一台机器上都操作
# 开启包转发等等(??)
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/profile
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 在运行时配置内核参数 -p:从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
sysctl -p /etc/sysctl.d/k8s.conf
# 为什么要修改内核参数
#/etc/sysctl.d/k8s.conf文件中三行参数的意思
关闭firewalld防火墙
# 要在每一台机器上都操作
# 安全相关,kubeadm初始化检测项目
systemctl stop firewalld ; systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
# 或者
firewall-cmd --state
关闭selinux (?)
# 要在每一台机器上都操作
# 安全相关,kubeadm初始化检测项目
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#修改selinux配置文件之后,重启机器,selinux配置才能永久生效
#显示Disabled说明selinux已经关闭
getenforce
配置阿里云的repo源
# 要在每一台机器上都操作
# 安装文件操作工具
yum install lrzsz -y
yum install openssh-clients
# 备份repo源(只需要操作Base源即可,其他保留)
mkdir /root/repo.bak
cd /etc/yum.repos.d/
mv CentOS-Base.repo /root/repo.bak/
# 把CentOS-Base.repo文件上传到master1主机的/etc/yum.repos.d/目录下
#安装yum-utils
yum -y install yum-utils
# 配置国内阿里云docker的repo源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置epel.repo
# 直接上传文件即可
# 最终/etc/yum.repo.d/下有 CentOS-Base.repo、docker-ce.repo、epel.repo
配置安装k8s组件需要的阿里云的repo源 (二进制不需要做)
# 编辑文件
vim /etc/yum.repos.d/kubernetes.repo
# 内容如下
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
# 使用scp命令将文件copy到其他虚拟机
scp /etc/yum.repos.d/kubernetes.repo master2:/etc/yum.repos.d/
配置时间同步
# 要在每一台机器上都操作
# kubeadm要求的
# 安装时间同步工具
yum install ntpdate -y
# 跟网络时间做同步
ntpdate cn.pool.ntp.org
# 把时间同步做成计划任务
crontab -e
# 内容如下:
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
# 重启定时服务
service crond restart
开启IPVS
# 要在每一台机器上都操作
# 作用:数据包转发
# 把ipvs.modules脚本上传到master1机器的/etc/sysconfig/modules/目录下,其他可使用scp命令拷贝
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
# 执行命令并检测
/etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
# 结果如下即可
ip_vs_ftp 13079 0
nf_nat 26583 1 ip_vs_ftp
ip_vs_sed 12519 0
ip_vs_nq 12516 0
ip_vs_sh 12688 0
ip_vs_dh 12688 0
安装基础软件包
# 要在每一台机器上都操作
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm
安装iptables
# 要在每一台机器上配置
# 由于k8s配置一些规则要用到iptables
yum install iptables-services -y
# 禁用
service iptables stop && systemctl disable iptables
# 清空防火墙规则
iptables -F
更多推荐
已为社区贡献5条内容
所有评论(0)