k8s的的物理架构是master/node模式:
k8s集群至少需要一个主节点(master)和多个工作节点(worker),master节点是集群的控制节点,负责整个集群的管理和控制,主要用于暴露API,调度部署和对节点进行管理,工作接电脑主要是运行容器的

首先要设置静态IP来获取网络,然后更改主机名并写入到/etc/hosts文件,为了实现相互之间通过主机名互相访问,我们设置hd1.com为master

修改主机名的命令为 hostnamectl set-hostname hd1.com && bash

k8s hostpath 不会覆盖原有内容 k8s hosts_主机名

在相互之间配置ssh的免密登录,命令分别为ssh-keygen和ssh-copy-id

关闭交换分区swap来提高性能,三台都要做,有临时关闭和永久关闭

临时:swapoff -a命令

永久:注释掉或者删除

vim /etc/fstab
#/dev/mapper/centos-swap swap      swap    defaults        0 0

可以通过free进行验证

k8s hostpath 不会覆盖原有内容 k8s hosts_kubernetes_02

swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。Kubeadm初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k8s的时候可以指定--ignore-preflight-errors=Swap来解决

再修改机器的内核参数,三台都要修改

k8s hostpath 不会覆盖原有内容 k8s hosts_服务器_03

也有简单办法,写成脚本执行,只在master上面做

for i in 2 3;do ssh hd${i}.com  modprobe br_netfilter && echo "modprobe br_netfilter" >> /etc/profile && echo -e "net.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\n" > /etc/sysctl.d/k8s.conf && sysctl -p /etc/sysctl.d/k8s.conf;done

k8s hostpath 不会覆盖原有内容 k8s hosts_kubernetes_04

关闭防火墙,三台都要做

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

这个是主要的一条,修改selinux配置文件之后,重启机器,selinux配置才能永久生效

命令getenforce进行验证,出现Disabled说明成功

脚本执行命令,只在master做

for i in 1 2 3;do ssh hd${i}.com  systemctl stop firewalld && systemctl disable firewalld && setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config && echo hd${i}.com;done

脚本方法配置时间服务,只在master做

for i in 1 2 3;do ssh hd${i}.com  yum install -y ntpdate && ntpdate cn.pool.ntp.org;done

下图说明我们时间走的还是快了一点

k8s hostpath 不会覆盖原有内容 k8s hosts_主机名_05

我们还需要开启ipvs模块

首先我们需要一个ipvs.modules压缩包,放到/root下

脚本执行方法

for i in 1 2 3;do scp /root/ipvs.modules hd${i}.com:/etc/sysconfig/modules/ && ssh hd${i}.com  bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs && echo -e "-----------------------------\nhd${i}.com";done

下图为加载玩的内容

k8s hostpath 不会覆盖原有内容 k8s hosts_服务器_06

配置阿里云的repo源,三台都要做

先下载lrzsz openssh-clients

k8s hostpath 不会覆盖原有内容 k8s hosts_服务器_07

然后把基础repo源备份

k8s hostpath 不会覆盖原有内容 k8s hosts_服务器_08

在进行下载阿里云的repo源

wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo

k8s hostpath 不会覆盖原有内容 k8s hosts_主机名_09

进行查看

k8s hostpath 不会覆盖原有内容 k8s hosts_linux_10

 在配置阿里云docker的reop源

 yum -y install yum-utils

k8s hostpath 不会覆盖原有内容 k8s hosts_服务器_11

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

k8s hostpath 不会覆盖原有内容 k8s hosts_服务器_12

 再配置epel源

 yum -y install epel-release

k8s hostpath 不会覆盖原有内容 k8s hosts_linux_13

配置安装k8s组件需要的阿里云的repo源

k8s hostpath 不会覆盖原有内容 k8s hosts_linux_14

 

安装基础的依赖软件包,三台都要做

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   conntrack ntpdate telnet ipvsadm

亦可以执行脚本,只在master做

for i in 1 2 3;do ssh hd${i}.com 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   conntrack ntpdate telnet ipvsadm;done

到这里它的准备环境就已经部署完毕