step-1
设置主机名(每一台主机名不能一样,一台一台修改,这里只是给出修改主机名命令)
查看主机名hostname
修改主机名
hostnamectl set-hostname <your_hostname>
step-2
配置hosts文件,是节点之间可以使用hostname相互访问
cat > /etc/hosts <<EOF
<node_ip> <node_hostname>
<node_ip> <node_hostname>
<node_ip> <node_hostname>
<node_ip> <node_hostname>
<node_ip> <node_hostname>
EOF
step-3
更新yum源(yum upgrade只更新关键,yum update更新关键和内核)
yum update -y
step-4
安装依赖包
yum install -y epel-release conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
step-5
关闭防火前
systemctl stop firewalld && systemctl disable firewalld
step-6
重置iptables(命令 -X 删除某个规则炼,-F 删除某规则炼中的所有规则,-P 定义过滤政策)
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
step-7
关闭swap
swapoff -a
使用下面的命令对文件/etc/fstab操作,注释 /dev/mapper/centos_master-swap swap swap defaults 0 0 这行
sed -i ‘s/.swap./#&/’ /etc/fstab
step-8
关闭selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config #永久关闭
setenforce 0 #临时关闭
step-9
关闭dnsmasq(否则可能导致docker容器无法解析域名)
service dnsmasq stop && systemctl disable dnsmasq
step-10
制作配置文件
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
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
EOF
生效文件
modprobe br_netfilter
sysctl -p /etc/sysctl.d/kubernetes.conf
step-11
安装docker
创建所需目录
mkdir -p /opt/kubernetes/docker && cd /opt/kubernetes/docker
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装:
yum list docker-ce --showduplicates | sort -r
安装指定版本docker, 如果不指定版本号,将安装最新版本的docker
sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
docker开机启动
systemctl enable docker && systemctl start docker
设置docker启动参数
- 设置docker数据目录:选择比较大的分区(我这里是根目录就不需要配置了,默认为/var/lib/docker)
- 设置cgroup driver, 防止文件驱动不一致,导致镜像无法启动(默认是cgroupfs,主要目的是与kubelet配置统一,这里也可以不设置后面在kubelet中指定cgroupfs)
docker info 可以查看到cgroup driver的类型
cat < /etc/docker/daemon.json
{
“graph”: “/docker/data/path”,
“exec-opts”: [“native.cgroupdriver=systemd”]
}
EOF
启动docker服务
systemctl start docker
daemon.json 详细配置示例
{
“debug”: false,
“experimental”: false,
“graph”: “/home/docker-data”,
“exec-opts”: [“native.cgroupdriver=systemd”],
“registry-mirrors”: [
“https://fy707np5.mirror.aliyuncs.com”
],
“insecure-registries”: [
“hub.zy.com”,
“172.16.249.159:8082”
]
}
启动docker服务
systemctl restart docker
step-12
安装kubeadm,kubelet,kubectl
kubeadm: 部署集群用的命令
kubelet: 在集群中每台机器上都要运行的组件,负责管理pod、容器的生命周期
kubectl: 集群管理工具(可选,只要在控制集群的节点上安装即可)
配置yum源,此处为阿里云kubernetes yum源码
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装工具
找到要安装的版本号
yum list kubeadm --showduplicates | sort -r
安装指定版本(这里用的是1.18.2)
yum install -y kubeadm-1.18.2-0 kubelet-1.18.2-0 kubectl-1.18.2-0 --disableexcludes=kubernetes
###可选配置
设置kubelet的cgroupdriver(kubelet的cgroupdriver默认为systemd,如果上面没有设置docker的exec-opts为systemd,这里就需要将kubelet的设置为cgroupfs)
sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
启动kubelet 所有的节点
systemctl enable kubelet && systemctl start kubelet