一、安装版本1.25
1、配置:4c8g(主)+4c4g(从)
二、关闭swap交换分区(k8s必须关闭)和防火墙
2.1、关闭交换分区。(所有集群服务器都需要操作)
swapoff -a
echo "vm.swappiness = 0" >> /etc/sysctl.conf
# 防止重启后交换分区继续生效,编辑 /etc/fstab文件,并注释带有swap的分区挂载
vim /etc/fstab
# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙(其实就是禁止开机自启)
systemctl disable firewalld
三、Containerd安装,k8s在1.2版本说废弃对doker的支持,1.24版本正式废弃,官方给出的理由doker的命令还会中转一层所以废弃了,从而提升了应用性能。(所有集群服务器都需要操作)
#安装必要的
yum install -y yum-utils device-mapper-persistent-data lvm2
#通过阿里云安装Containerd
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install containerd.io
# 查看containerd 版本
containerd -v
生成containerd的配置文件
mkdir -p /etc/containerd/
# 生成contained的默认配置
containerd config default | tee /etc/containerd/config.toml
修改Containerd启动时的镜像为阿里云的
vim /etc/containerd/config.toml
将sandbox_image = "k8s.gcr.io/pause:3.6"改成registry.aliyuncs.com/google_containers/pause:3.6
将 SystemdCgroup 的值改为true
# 这一步好像是linux内核版本有关,一般要改
将 runtime_type 的值修改为io.containerd.runtime.v1.linux
启动containerd
#将containerd设置为开启自启动
systemctl enable containerd
#真正的启动命令
systemctl start containerd
# 检查containerd服务的状态信息
systemctl status containerd
四、IP转发(所有集群服务器都需要操作)
cat <<EOF | tee /etc/modules-load.d/kubernetes1.24.conf
overlay
br_netfilter
EOF
cat <<EOF | tee /etc/sysctl.d/kubernetes1.24-forsys.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
#加载 br_netfilter 模块
modprobe br_netfilter
# 查询系统配置
sysctl --system
五、安装 kubelet kubeadm (所有集群服务器都需要操作)
#修改gpg为阿里云
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 安装kubelet,kubeadm,kubectl
yum install -y --nogpgcheck kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
#安装bash
yum -y install bash-completion
source <(kubeadm completion bash) && source <(kubectl completion bash)
# 启动kubelet和将kubelet设置为开机启动
systemctl start kubelet
systemctl enable kubelet
六、准备初始化集群(主节点上执行,4c8g机器上)
#将集群初始化的默认配置重新生成到当前目录
kubeadm config print init-defaults > init.yaml
init.yaml的信息:
需要将advertiseAddress的值改为当前机器的ip(内网ip就行)
nodeRegistration下的name值改为当前机器的机器名(机器名可以通过hostname这个命令查询)
将imageRepository的值改为阿里云的仓库registry.aliyuncs.com/google_containers
初始化集群
# 初始化等待镜像Pull完成
kubeadm init --config=init.yaml
创建admin配置目录
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
至此,集群创建完毕
七、创建集群网络。使用calico(主节点上执行,4c8g机器上)
#该操作会将这个链接的数据下载到当前目录下的calico.yaml内
curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
#部署网络组件,该操作会把calico.yaml部署到k8s集群中
kubectl apply -f calico.yaml
八、从节点加入集群(从节点上执行,4c4g机器上)
#不用怀疑后边的token。默认是这么多,只需要改变你的主节点的ip也就是10.0.4.11是你上边init.ymal中配置的
kubeadm join 10.0.4.11:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:99c57b0e86024ed9a41a227e9cba03bc464024cf9ca50287ff80bfe4801748a1
主节点上看从节点是否加入
#查询所有节点信息,也许会显示notReady等待一会应该就会好,如果没好应该是出现问题了
kubectl get nodes