环境基础
3台CentOS7主机:
master主机: k8s主节点(2核2g)
node1主机: 运行节点1(2核4g)
node2主机: 运行节点2(2核4g)
k8s版本: v1.19.*
docker版本: 19.03.13
ip(/etc/hosts):
192.168.101.100 k8s.master
192.168.101.101 k8s.node1
192.168.101.102 k8s.node2
这里说一下基本的三台机器,括号里面的配置是最基础的配置,特备是node节点,一定要给够内存和cpu,至少两内核,这是官方最低的配置,不然很有可能导致集群部署失败。如果是本地pc配置的问题导致搭建不了,可以逛逛阿里云
以下部署步骤,包括集群、网络和镜像的部署都是我亲身经历的,如果在过程中有任何报错的话请一定要检查网络环境,毕竟大家都是墙内人!!
创建基础物理机
创建基础镜像机
因为在三台机器上有些相同的环境,这时候我们创建一个基础的镜像机的话可以避免重复安装、配置环境的痛苦。
中间的步骤基本上就不用贴图了,跟着下一步就行了
这里贴一下我的base机的名称
这里一定要选两核
4g不能少,master主机可以到时候改为2g
这里我选择的桥接模式,当然也可以选择nat模式,这个和你的网络环境是不是比较稳定有一定的关系,为了模拟服务器之间的关系这里比较推荐桥接模式,只要服务器之间能够互相ping通就没问题,不要纠结网络类型
这里尽量20g的硬盘
其他的步骤都是选择默认的就行了,不要忘了最后装上系统镜像,在开头我找了个系统镜像的链接,和我使用的CentOS镜像是一个版本。
基础镜像环境准备
安装好系统后一套干干净净的centos就像初恋一样没有ip
这时候我们需要配置一下这台的ip
首先我们查看下自己的物理机的网卡
这里记住本地物理机的网关地址和子网掩码
vi /etc/sysconfig/network-scripts/ifcfg-ens33
这里需要修改修改三个地方:
- 修改自动分配ip地址为静态ip
- 开启网卡
- 定义ip、网关、子网掩码和dns(ip不要和物理机ip冲突了;网关一定要和物理机的网关是一样的)
保存网络配置后重启网络
systemctl restart network.service
查看ip并且有网络的情况下说明静态ip就配置好了,就可以切换到连接工具开始配置。
-
修改yum源(我这里使用的事163的源,这个源我一直在用很好用,速度很快很稳定,如果梯子比较滑溜也不用这一步)
下载repo文件
yum install -y wget wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
备份并替换系统的repo文件
cp CentOS7-Base-163.repo /etc/yum.repos.d/ cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.bak mv CentOS7-Base-163.repo CentOS-Base.repo
执行yum源更新命令
yum clean all yum makecache yum update
-
关闭防火墙
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
-
安装依赖包
yum install -y epel-release yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp
-
同步时间(这点很重要,k8s是一个集群环境,节点时间如果对不上可能会导致注册不上集群)
ntpdate time1.aliyun.com
-
加载内核模块
modprobe ip_vs_rr modprobe br_netfilter
-
优化内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 net.ipv4.ip_forward=1 net.ipv4.tcp_tw_recycle=0 vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它 vm.overcommit_memory=1 # 不检查物理内存是否够用 vm.panic_on_oom=0 # 开启 OOM fs.inotify.max_user_instances=8192 fs.inotify.max_user_watches=1048576 fs.file-max=52706963 fs.nr_open=52706963 net.ipv6.conf.all.disable_ipv6=1 net.netfilter.nf_conntrack_max=2310720 EOF sysctl -p /etc/sysctl.d/kubernetes.conf
-
关闭交换空间(在容器环境中必须关闭交换空间,不然会导致资源的严重浪费)
swapoff -a
查看交换空间,Swap是0,表示交换空间关闭
free
基础镜像软件准备
-
添加k8s的yum源
cat <<EOF >>/etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes repo baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg enabled=1 EOF
-
添加docker的yum源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装docker
yum -y install docker-ce
-
启动docker ,修改镜像源,并且开机自启
systemctl enable docker systemctl start docker cat <<EOF >>/etc/docker/daemon.json { #这是我自己的镜像源地址,个人可以去阿里云申请docker的镜像仓库地址 "registry-mirrors": ["https://********.mirror.aliyuncs.com"] } EOF systemctl restart docker
-
安装kubeadm,kubelet,kubectl
yum -y install kubelet kubeadm kubectl systemctl enable kubelet
自此所有的基础环境就搭建好了,这里需要克隆三套机器,一台的内存改为2g作为master节点,其余两台是node节点
逐个启动,第一时间修改网络配置,并重启网络,每个主机只修改网络配置和hosts文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改IPADDR为不同的地址,三台机器的ip地址不能冲突。改完后看看每台主机的ip,检查下docker是否启动
master:
node1:
node2:
我这里的三台机器的ip地址分别为
master: 192.168.101.100
node1: 192.168.101.101
node2: 192.168.101.102
修改完每台机器的ip地址后,修改每台机器的hosts文件,为每个机器添加域名。
cat <<EOF>> /etc/hosts
192.168.101.100 k8s.master
192.168.101.101 k8s.node1
192.168.101.102 k8s.node2
EOF
至此所有的准备工作就结束了,下一章安装master节点和注册node节点,搭建集群