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 |
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 <关闭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



