这里写目录标题
- 背景
- 步骤
- 一、集群规划及架构(node节点可以有很多个)
- 二、系统初始化准备(所有节点都需要进行操作)
- 三、安装并配置cri-dockerd插件(三台服务器同时操作)
- 四、安装kubeadm(所有节点同步操作)
- 五、初始化集群
- 六、将Node节点添加到集群
- 七、安装网络组件Calico
- 八、安装kuboard v3安装,在master节点执行
背景
步骤
一、集群规划及架构(node节点可以有很多个)
二、系统初始化准备(所有节点都需要进行操作)
1、关闭防火墙
systemctl disable firewalld --now
setenforce 0
sed -i -r 's/SELINUX=[ep].*/SELINUX=disabled/g' /etc/selinux/config
2、配置域名解析
cat >> /etc/hosts << EOF
192.168.60.195 master-1
192.168.60.196 node-1
192.168.60.197 node-2
EOF
3、在指定主机上面修改主机名(每台主机上执行自己的那一行)
hostnamectl set-hostname master-1 &&bash
hostnamectl set-hostname node-1 &&bash
hostnamectl set-hostname node-2 &&bash
4、禁用swap交换分区(kubernetes强制要求禁用)
swapoff --all
#禁止开机自启动swap交换分区
sed-i-r'/swap/ s/^/#/' /etc/fstab
5、修改Linux内核参数,添加网桥过滤器和地址转发功能
cat >> /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
加载网桥过滤器模块
modprobe br_netfilter
lsmod |grep br_netfilter sysctl -p /etc/sysctl.d/kubernetes.conf
6、配置ipvs功能
在kubernetes中Service有两种代理模型,一种是基于iptables的,一种是基于ipvs,两者对比ipvs的性能要高,如果想要使用ipvs模型,需要手动载入ipvs模块
rpm -ivh /root/ipvsadm/*.rpm --nodeps --forcecat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOFchmod +x /etc/sysconfig/modules/ipvs.modules
# 执行脚本
/etc/sysconfig/modules/ipvs.modules# 验证ipvs模块
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
7、安装docker容器组件
tar xf docker.tar.gz
rpm -ivh docker/*.rpm --nodeps --force
# 启动docker并设置开机自启systemctl enable docker --nowsystemctl status docker
三、安装并配置cri-dockerd插件(三台服务器同时操作)
1、安装cri-dockerd插件
rpm -ivh cri-docker/cri-dockerd-0.3.1-3.el7.x86_64.rpm --nodeps --force
2、备份并更新cri-docker.service文件
mv /usr/lib/systemd/system/cri-docker.service{,.default}
vi /usr/lib/systemd/system/cri-docker.service
打开文件后写入
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
3、启动cir-dockerd
systemctl daemon-reload
systemctl start cri-docker.service
systemctl enable cri-docker.service
四、安装kubeadm(所有节点同步操作)
1、安装kubelet/ kubeadm/kubectl
rpm -ivh kubelet/*.rpm --nodeps --force
2、kubeadm将使用kubelet服务以容器方式部署kubernetes的主要服务,所以需要先启动kubelet服务
systemctl enable kubelet.service --now
五、初始化集群
1、在master-1主机上进行操作,上传初始化默认配置文件
我们根据自己需求进行修改默认配置文件,我主要更改了一下配置如下:
advertiseAddress:更改为master的IP地址 #在master1节点修改kubeadm.yaml
2、进行初始化
#每个设备上传对应的压缩包
#master1上传master.tar.gz 、node1上传node1.tar.gz、node2上传node2.tar.gz
Master1执行
docker load -i master.tar.gz
Node1执行
docker load -i node1.tar.gz
Node2执行
docker load -i node2.tar.gz
每个节点都执行
docker load -i kube-controllers.tar
在master1执行初始化操作
kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
初始化成功后输出如下内容:
[init] Using Kubernetes version: v1.27.0
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
W1003