目录
2、所有节点安装kubeadm,kubelet和kubectl
2、所有 node 节点都修改 docker 配置文件,加上私有仓库配置
一、环境部署
服务器 | 主机名 | IP地址 | 主要软件 |
---|---|---|---|
master 节点 | master01 | 172.16.88.77 | docker、kubeadm、kubelet、kubectl、flannel |
node01 节点 | node01 | 172.16.88.88 | docker、kubeadm、kubelet、kubectl、flannel |
node02 节点 | node02 | 172.16.88.99 | docker、kubeadm、kubelet、kubectl、flannel |
harbor 节点 | hub.dh.com | 172.16.12.15 | docker、docker-compose、harbor-offline-v1.2.2 |
(1)所有设备关闭防火墙,清空iptables规则
systemctl disable --now firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
(2)所有设备关闭selinux
setenforce 0 #临时关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久关闭
(3)所有设备关闭swap
swapoff -a #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
(4)修改所有设备的主机名
[root@localhost ~]#hostnamectl set-hostname master
[root@localhost ~]#bash
[root@localhost ~]#hostnamectl set-hostname node01
[root@localhost ~]#bash
[root@localhost ~]#hostnamectl set-hostname node02
[root@localhost ~]#bash
[root@localhost ~]#hostnamectl set-hostname hub.dh.com
[root@localhost ~]#bash
(5) 所有设备修改本地的hosts文件
cat >> /etc/hosts << EOF
172.16.88.77 master
172.16.88.88 node01
172.16.88.99 node02
172.16.88.66 hub.dh.com
EOF
(7)所有设备调整内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF
sysctl --system #重新加载系统的配置参数
(8)所有设备加载 ip_vs 模块
#加载 ip_vs 模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
(9)所有设备实现时间同步
yum install ntpdate -y
ntpdate time.windows.com
大概步骤:
① 在所有节点上安装Docker和kubeadm
② 部署Kubernetes Master
③ 部署容器网络插件
④ 部署 Kubernetes Node,将节点加入Kubernetes集群中
⑤ 部署 Dashboard Web 页面,可视化查看Kubernetes资源
⑥ 部署 Harbor 私有仓库,存放镜像资源
二、部署K8S集群
1、所有节点设备安装docker
master、node01、node02 节点上都需要以下操作
#安装docker服务相关软件
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"], #使用自己的阿里云镜像加速器
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
systemctl daemon-reload #重新加载systemd服务
systemctl restart docker.service #重启docker服务
systemctl enable docker.service #开机自启docker服务
docker info | grep "Cgroup Driver" #过滤得到"Cgroup Driver"详细信息
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志
2、所有节点安装kubeadm,kubelet和kubectl
master、node01、node02 节点上都需要以下操作
#定义kubernetes源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
#开机自启kubelet
systemctl enable kubelet.service
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启
3、查看初始化镜像并执行脚本加载镜像文件
(1)查看初始化需要的镜像
[root@master ~]#kubeadm config images list
(2)在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录
[root@master ~]#unzip v1.20.11.zip -d /opt/k8s
[root@master ~]#cd /opt/k8s/v1.20.11
#循环遍历当前目录下所有以 ".tar" 结尾的文件,并将它们作为镜像加载到 Docker 中
[root@master v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
#for i in $(ls *.tar); 对当前目录下所有以 ".tar" 结尾的文件执行循环操作
#do docker load -i $i; 对每个符合条件的文件执行 docker load 命令,从文件中加载镜像到 Docker 引擎中
(3)复制镜像和脚本到 node 节点,并在 node 节点上执行脚本加载镜像文件
[root@master ~]#scp -r /opt/k8s root@node01:/opt
[root@master ~]#scp -r /opt/k8s root@node02:/opt
#在 node01 节点上执行脚本加载镜像文件
[root@node01 ~]#cd /opt/k8s/v1.20.11/
[root@node01 v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
#在 node02 节点上执行脚本加载镜像文件
[root@node02 ~]#cd /opt/k8s/v1.20.11/
[root@node02 v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
4、初始化 kubeadm
在 master 节点上完成初始化 kubeadm