基于Containerd容器运行时,kubeadm极速部署K8S集群

 

 

  一、主机配置【最低2g,2c,硬盘100G】

  1、主机名配置

hostnamectl set-hostname k8s-master01

 

   2、配置静态IP

  

vim /etc/sysconfig/network-scripts/ifcfg-ens33
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"

DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.229.130"
PREFIX="24"
GATEWAY="192.168.229.2"
DNS1="119.29.29.29"

  3、查看ip配置结果

ip a s ens33

  4、主机名与IP地址映射关系【所有主机均需要】

vi  /etc/hosts 
192.168.229.130 k8s-master01
192.168.229.131 k8s-worker01

  5、防火墙关闭

systemctl disable firewalld
systemctl stop firewalld

firewall-cmd --state

  6、关闭SeLinux

sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 需要重启操作系统

   或者【不需要重启操作系统】

 vi /etc/selinux/config

 

   7、时间同步配置

crontab -e

  添加:

0 */1 * * * ntpdate time1.aliyun.com

   8、内核升级

  •  检查当前 CentOS 系统内核版本 ,执行如下命令查看:
 uname -r

  Linux 3.10.0-1160.el7.x86_64

  检查发现当前内核版本是3.10,

  •  使用elrepo源升级内核,配置elrepo源,执行如下命令

  9、配置内核转发,及网桥过滤

  • 添加网桥过滤及内核转发配置文件
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
  • 加载br_netfilter模块
modprobe br_netfilter
  • 查看是否加载
lsmod | grep br_netfilter

  10、安装ipset及ipvsadm

yum -y install ipset ipvsadm
  • 配置ipvsadm模块加载方式
cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
  • 授权、运行、检查是否加载
chmod 755 /etc/sysconfig/modules/ipvs.modules  && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

   11、关闭swap

  执行swapoff -a 临时关闭,通过修改/etc/fstab文件实现永久关闭。执行如下命令

ansible k8s -m shell -a "sed -ri 's/.*swap.*/#&amp;/' /etc/fstab"

   或者 ,将swap注释

 vi /etc/fstab

  二、容器运行时Containerd准备 

 

  1. containerd下载:https://github.com/search?q=containerd&type=repositories

网盘下载:

链接:https://pan.baidu.com/s/1HyTVVFqrmudESzhDeHxVZA?pwd=26o9
提取码:26o9

  • 将文件下载到本地,然后上传到linux目录,不要自己解压,一个一个复制,应使用 命令 -C / ,解压到根目录 /root,它会自动将解压后文件,分配到各目录
[root@k8s-master01 master01]# tar xf cri-containerd-cni-1.7.7-linux-amd64.tar.gz  -C / 
  • 创建containerd目录
[root@k8s-master01 master01]# mkdir /etc/containerd
  • 生成config.toml配置文件
[root@k8s-master01 master01]# containerd config default > /etc/containerd/config.toml
  • 编辑沙盒配置文件,k8s 1.27版本用的是3.9的沙盒,需要将3.8改为3.9
[root@k8s-master01 master01]# vi /etc/containerd/config.toml 

 

  配置文件中沙盒地址为国外的,不开vpn下载不了,需要改为阿里云地址:

sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.9"

  设为开机启动

[root@k8s-master01 master01]# systemctl enable  --now containerd   #设置开机启动

 

  2、runc下载:https://github.com/search?q=runc&type=repositories

 

 

网盘下载

链接:https://pan.baidu.com/s/1GNP9VxGKC7vw6a5m_xqKOg?pwd=c7oj
提取码:c7oj

  • 部署前,首先进行解压
[root@k8s-master01 master01]# tar xf libseccomp-2.5.4.tar.gz 

  进入解压后文件

[root@k8s-master01 master01]# cd libseccomp-2.5.4/
  • 安装需要的工具
[root@k8s-master01 libseccomp-2.5.4]# yum -y install gperf
  • 配置
[root@k8s-master01 libseccomp-2.5.4]# ./configure 
  • 编译
[root@k8s-master01 libseccomp-2.5.4]# make 
  • 安装
[root@k8s-master01 libseccomp-2.5.4]# make install
  • 使用查找命令,测试是否安装成功
[root@k8s-master01 libseccomp-2.5.4]# find / -name "libseccomp.so"

  • runc安装,查找旧的runc安装地址
[root@k8s-master01 ~]# which runc
/usr/local/sbin/runc
  • 删除旧的runc
[root@k8s-master01 ~]# rm -rf /usr/local.sbin/runc

 

 

下载新的runc

链接:https://pan.baidu.com/s/1bPKlfK5EeeZT4ujp2Z-ebw?pwd=fa1i
提取码:fa1i

  • 添加权限
[root@k8s-master01 master01]# chmod +x runc.amd64 
  • 将下载后新文件,移动到刚才删除文件位置
[root@k8s-master01 master01]# mv runc.amd64 /usr/local/sbin/runc
  • 执行runc
[root@k8s-master01 master01]# runc

   三、K8S集群部署

  • K8S软件yum源准备
cat > /etc/yum.repos.d/k8s.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
  • 集群软件安装
默认安装【最新版本】
yum -y install kubeadm kubelet kubectl

查看指定版本
[root@k8s-master01 ~]# yum list kubeadm.x86_64 --showdup licates | sort -r

安装指定版本
yum -y install kubeadm-1.27.3-0 kubelet-1.27.3-0 kubectl-1.27.3-0
  • 配置kubelet

为了实现docker使用的cgroupdriver与kubelet使用的一致性,建议修改如下文件内容

[root@k8s-master01 ~]# vim /etc/sysconfig/kubelet
  • 修改这一行内容
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
  • 设置kubelet为开机自动启动,由于没有生成配置文件,集群初始化后自动启动
systemctl enable kubelet
  • 集群初始化
192.168.229.130为master节点IP
kubeadm init --kubernetes-version=v1.27.3 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.229.130 --cri-socket unix:///var/run/containerd/containerd.sock  --image-repository=registry.aliyuncs.com/google_containers

出现这个表示安装成功

  • 执行如下命令
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 使用containerd时,会在net.d目录生成的文件
[root@k8s-master01 ~]# ls /etc/cni/net.d
10-containerd-net.conflist 这个文件是给pod分配IP地址的,
  • 这个地址不打算使用,计划部署一个calico,所以移动到home目录
[root@k8s-master01 ~]# mv /etc/cni/net.d/10-containerd-net.conflist  /home

将分节点,添加到master节点

kubeadm join 192.168.229.130:6443 --token ra45m5.7rc4atyi11xxae7d \
        --discovery-token-ca-cert-hash sha256:f83babdf7e1db104a365ba4d8eff9e83e9672ea34e06a8cdba3d0954385876bd 
 --cri-socket unix:///var/run/containerd/containerd.sock  

  四、网络插件calico部署

下载地址:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

在master节点,将上面命令进行复制执行

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml

配置文件,先下载下来,修改后执行

 wget  https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml
vi custom-resources.yaml 

执行命令

 kubectl create -f custom-resources.yaml

 

查看命名空间是否有pod运行
kubectl get pods -n calico-system

//监视查看
watch kubectl get pods -n calico-system

 

 

参考:https://www.bilibili.com/video/BV1Cz4y1g7HJ?p=1&vd_source=db8cd9c1a8a8621ff5b724115534601a

posted @ 2023-11-23 22:04  低调码农哥!  阅读(160)  评论(0编辑  收藏  举报