k8s 最简单的一主二从本地集群部署 并部署镜像(1、基础环境搭建)
- 环境基础
- 创建基础物理机
- 创建基础镜像机
- 基础镜像环境准备
- 基础镜像软件准备
环境基础
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节点,搭建集群