准备好几台机器,最好准备至少2台机器 这里准备了3台机器,一台做master,2台做node 1.机器基本设置 1.1 设置主机名
代码语言:javascript复制hostnamectl set-hostname master #在master机器上执行
hostnamectl set-hostname node1 #在node1机器上执行
hostnamectl set-hostname node2 #在node2机器上执行
1.2 设置三台机器时区,保证后续事件准确,如果每台机器的时间不一样,后续出现很多莫名其妙的问题
代码语言:javascript复制timedatectl set-timezone Asia/Shanghai #在三台上都执行
1.3 添加主机至hosts文件
代码语言:javascript复制vim /etc/hosts #三台机器都执行
#在打开的文件添加三行内容,内容为机器ip 名称,本文直接以master node命名,实际可按照需求更改
#192.168.1.181 matser
#192.168.1.182 node1
#192.168.1.183 node2
1.4 关闭swap分区,很重要,swap分区不关闭,会直接导致部署失败,三台全部需要执行
代码语言:javascript复制swapoff -a
vim /etc/fstab #将swap所在行注释掉
1.5 修改iptables信息
代码语言:javascript复制 echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
1.6 关闭所有节点的seliux以及firewalld
代码语言:javascript复制sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
2.安装docker
代码语言:javascript复制yum install docker -y #或者使用yum install -y docker-ce安装docker-ce版本也可
systemctl start docker && systemctl enable docker
查看docker cgroup
docker info 1 docker与K8S两者必须要保持一致,否则会报错,本文统一使用cgroup
如果查看到的cgroup不为cgroupfs,需要修改
代码语言:javascript复制vim /usr/lib/systemd/system/docker.service
修改完成后重载配置,重启docker
代码语言:javascript复制systemctl daemon-reload && systemctl restart docker
3.安装kubeadm 3.1 配置yum文件,使用国内源,三台均执行
代码语言:javascript复制cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
3.2 安装kubeadm,三台均执行
代码语言:javascript复制yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
systemctl enable kubelet
3.3 导入本地镜像,避免初始化一直卡在下载镜像步骤 镜像下载地址:(包括flannel文件)后面可能wget不到
链接:https://pan.baidu.com/s/12HmZ08IKP7ptHOw1BEuzkg 提取码:0a2q 复制这段内容后打开百度网盘手机App,操作更方便哦
本文将文件均放置在/home/k8s目录下
代码语言:javascript复制cd /home/k8s
tar xf kubeadm-basic.images.tar.gz
可以手动进入解压的文件夹一个一个导入镜像,也可以使用脚本
代码语言:javascript复制cd /home/k8s
vim loadimages.sh
#脚本内容
#!/bin/bash
ls /home/k8s/kubeadm-basic.images > /root/docker-load-list.txt
cd /home/k8s/kubeadm-basic.images
for i in $(cat /root/docker-load-list.txt)
do
docker load -i $i
done
rm -f /root/docker-load-list.txt
# 保存退出脚本
sh loadimages.sh #执行脚本
3.4 初始化master节点,此步只在master节点上执行 导出kubeadm-config.yaml配置文件
代码语言:javascript复制kubeadm config print init-defaults > /etc/kubernetes/kubeadm-config.yaml
编辑kubeadm-config.yaml文件
代码语言:javascript复制vim /etc/kubernetes/kubeadm-config.yaml
第12行:advertiseAddress:[master ip]
第34行:kubernetesVersion: v1.15.1
第36行下增加:podSubnet: "10.244.0.0/16" #pod网段
执行初始化
代码语言:javascript复制kubeadm init --config=/etc/kubernetes/kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
初始化成功后,执行提示命令
代码语言:javascript复制mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.5 安装flannel,此步只在master接上执行
代码语言:javascript复制wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
## wget报错的话就把百度网盘中的flannel文件导入
kubectl create -f kube-flannel.yml
3.6 使用初始化成功生成的命令,复制到node机器上执行,将node机器添加到master机器
tab快捷键安装
代码语言:javascript复制yum -y install bash-completion && source /usr/share/bash-completion/bash_completion && source <(kubectl completion bash) && echo "source <(kubectl completion bash)" >> ~/.bashrc