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配置的问题导致搭建不了,可以逛逛阿里云
以下部署步骤,包括集群、网络和镜像的部署都是我亲身经历的,如果在过程中有任何报错的话请一定要检查网络环境,毕竟大家都是墙内人!!

创建基础物理机

创建基础镜像机

因为在三台机器上有些相同的环境,这时候我们创建一个基础的镜像机的话可以避免重复安装、配置环境的痛苦。

k8s 上传镜像 k8s部署镜像_kubernetes


中间的步骤基本上就不用贴图了,跟着下一步就行了这里贴一下我的base机的名称

k8s 上传镜像 k8s部署镜像_docker_02

这里一定要选两核

k8s 上传镜像 k8s部署镜像_docker_03

4g不能少,master主机可以到时候改为2g

k8s 上传镜像 k8s部署镜像_linux_04

这里我选择的桥接模式,当然也可以选择nat模式,这个和你的网络环境是不是比较稳定有一定的关系,为了模拟服务器之间的关系这里比较推荐桥接模式,只要服务器之间能够互相ping通就没问题,不要纠结网络类型

k8s 上传镜像 k8s部署镜像_ip地址_05


这里尽量20g的硬盘

k8s 上传镜像 k8s部署镜像_ip地址_06


其他的步骤都是选择默认的就行了,不要忘了最后装上系统镜像,在开头我找了个系统镜像的链接,和我使用的CentOS镜像是一个版本。

基础镜像环境准备

安装好系统后一套干干净净的centos就像初恋一样没有ip

k8s 上传镜像 k8s部署镜像_k8s 上传镜像_07


这时候我们需要配置一下这台的ip

首先我们查看下自己的物理机的网卡

k8s 上传镜像 k8s部署镜像_kubernetes_08


这里记住本地物理机的网关地址和子网掩码

vi /etc/sysconfig/network-scripts/ifcfg-ens33

k8s 上传镜像 k8s部署镜像_linux_09


这里需要修改修改三个地方:

  1. 修改自动分配ip地址为静态ip
  2. 开启网卡
  3. 定义ip、网关、子网掩码和dns(ip不要和物理机ip冲突了;网关一定要和物理机的网关是一样的)

保存网络配置后重启网络

systemctl restart network.service

k8s 上传镜像 k8s部署镜像_linux_10


查看ip并且有网络的情况下说明静态ip就配置好了,就可以切换到连接工具开始配置。

  1. 修改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
  1. 关闭防火墙
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
  1. 安装依赖包
yum install -y epel-release
   yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp
  1. 同步时间(这点很重要,k8s是一个集群环境,节点时间如果对不上可能会导致注册不上集群)
ntpdate time1.aliyun.com

k8s 上传镜像 k8s部署镜像_k8s 上传镜像_11

  1. 加载内核模块
modprobe ip_vs_rr
 modprobe br_netfilter
  1. 优化内核参数
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

k8s 上传镜像 k8s部署镜像_linux_12

  1. 关闭交换空间(在容器环境中必须关闭交换空间,不然会导致资源的严重浪费)
swapoff -a

查看交换空间,Swap是0,表示交换空间关闭

free

k8s 上传镜像 k8s部署镜像_kubernetes_13

基础镜像软件准备

  1. 添加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
  1. 添加docker的yum源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

k8s 上传镜像 k8s部署镜像_ip地址_14

  1. 安装docker
yum -y install docker-ce
  1. 启动docker ,修改镜像源,并且开机自启
systemctl enable docker
 systemctl start docker

 cat <<EOF >>/etc/docker/daemon.json
 {
 #这是我自己的镜像源地址,个人可以去阿里云申请docker的镜像仓库地址
 "registry-mirrors": ["https://********.mirror.aliyuncs.com"]
 }
 EOF

 systemctl restart docker
  1. 安装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:

k8s 上传镜像 k8s部署镜像_ip地址_15


node1:

k8s 上传镜像 k8s部署镜像_docker_16


node2:

k8s 上传镜像 k8s部署镜像_docker_17

我这里的三台机器的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

k8s 上传镜像 k8s部署镜像_ip地址_18

至此所有的准备工作就结束了,下一章安装master节点和注册node节点,搭建集群