基于containerd部署K8S
零、 环境介绍
- HW: 2c2g 20GB
- OS: Rocky Linux 9.2
- Master: 192.168.128.200
- Node1: 192.168.128.204
- Node2: 192.168.128.205
一、 基础环境
- 一台或多台服务器
- 内存2GB或更多,CPU2核或更多,硬盘30GB或更多
- 所有机器之间网络互通
- 可以访问外网,需要拉取镜像
- 禁止swap分区
1.1 禁止 SWAP 分区
编辑配置文件: /etc/fstab
注释相关分区, 重启系统
1.2 关闭防火墙
- 三台服务器都需配置
systemctl stop firewalld iptables
systemctl disable firewalld iptables
1.3 关闭 SeLinux
- 三台服务器都需配置
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
1.4 配置主机名
hostnamectl set-hostname k8s-master
主机 | ip |
---|---|
k8s-master | 192.168.128.200 |
k8s-node1 | 192.168.128.204 |
k8s-node2 | 192.168.128.205 |
1.5 配置解析
三台服务器都需配置
cat >> /etc/hosts << EOF
192.168.128.200 k8s-master
192.168.128.204 k8s-node1
192.168.128.205 k8s-node2
EOF
1.6 配置时间同步
- 三台服务器都需配置
systemctl enable chronyd --now
1.7 配置ipvs负载均衡
master 节点配置
路径不同于CentOS7 的/etc/sysconfig/modules
安装相关软件包
yum install ipset ipvsadm
开启 ip_vs 配置文件
cat > /etc/modules-load.d/ipvs.conf <<EOF
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF
内核重新加载
systemctl restart systemd-modules-load.service
验证相关模块是否加载
lsmod | grep ip_vs
ip_vs_sh 16384 0
ip_vs_wrr 16384 0
ip_vs_rr 16384 0
ip_vs 233472 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 212992 3 nf_nat,nft_ct,ip_vs
nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs
libcrc32c 16384 5 nf_conntrack,nf_nat,nf_tables,xfs,ip_vs
1.8 开启网络转发和桥接
- 三台服务器都需配置
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOFsysctl -p
1.9 修改源
- 三台服务器都需配置
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirror.nju.edu.cn/rocky|g' \
-i.bak \
/etc/yum.repos.d/rocky-extras.repo \
/etc/yum.repos.d/rocky.repo
二、 containerd 部署 (二进制)
- 三台服务器都需要部署
2.1 下载
https://github.com/containerd/containerd/releases
2.2 解压(not follow FHS)
tar xzvf containerd-1.6.2-linux-amd64.tar.gz -C /usr/local/containerd
2.3 systemd管理
[Unit] |
systemctl daemon-reload
systemctl enable containerd --now
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/containerd/bin"' > /etc/environment
2.4 可能遇到的问题
问题: containerd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
解决: rm -rf /var/lib/containerd
2.5 安装 runc
https://github.com/containernetworking/plugins/releases
mkdir -p /opt/cni/bin
tar -xzvf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin
三、 containerd 安装 (yum)
containerd的官方yum源是由docker去维护的 😂😂😂😂(●’◡’●)(●’◡’●)(●’◡’●)
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
yum install containerd.io
四、 配置 cotainerd
4.1 生成配置文件
containerd config default > /etc/containerd/config.toml
kubeadm config images list
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
kubeadm init \ |
二、 安装 k8s 组件
2.1 配置源
- 三台服务器都需要操作
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
2.2 安装 K8S 软件包
- 三台服务器都需要操作
yum install kubeadm kubelet kubectl kubernetes-cni cri-tools
2.3 配置 cri
- 三台服务器都需要操作
cat > /etc/crictl.yaml << EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: true
pull-image-on-create: false
disable-pull-on-run: false
EOF