一、架构图
如下图所示:
二、环境信息
主机名 |
K8S版本 |
系统版本 |
内核版本 |
IP地址 |
备注 |
k8s-master-63 |
1.24.17 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.63 |
master节点 + etcd节点 |
k8s-master-64 |
1.24.17 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.64 |
master节点 + etcd节点 |
k8s-master-65 |
1.24.17 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.65 |
master节点 + etcd节点 |
k8s-worker-66 |
1.24.17 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.66 |
worker节点 |
- |
- |
- |
- |
192.168.1.146 |
vip(虚拟ip) |
k8s-lb-01 |
- |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.185 |
Nginx + keepalived |
k8s-lb-02 |
- |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.205 |
Nginx + keepalived |
宿主机 |
集群Pod网段 |
集群Service网段 |
192.168.1.0/24 |
10.48.0.0/16 |
10.96.0.0/16 |
软件 |
版本 |
安装方式 |
containerd |
1.7.2 |
apt或二进制 |
runc |
1.1.7 |
apt或二进制 |
cni |
1.2.0 |
apt或二进制 |
cri-tools |
1.26.0 |
apt或二进制 |
kube-lb(nginx) |
1.22.1 |
二进制 |
keepalived |
v2.2.7 |
二进制 |
kubeadm、kubectl、kubelet |
v1.24.17 |
apt或二进制 |
如果kubeadm、kubectl、kubelet使用二进制安装,需要单独安装依赖软件包,如果是使用apt方式安装,则会自动安装。如下所示:
软件 |
版本 |
ebtables |
2.0.11 |
socat |
1.7.3.3 |
总结:
1、安装containerd,需要同时安装runc及cni网络插件。Containerd不能直接操作容器,需要通过runc来运行容器。默认Containerd管理的容器仅有lo网络(无法访问容器之外的网络),如果需要访问容器之外的网络则需要安装CNI网络插件。CNI(Container Network Interface) 是一套容器网络接口规范,用于为容器分配ip地址,通过CNI插件Containerd管理的容器可以访问容器之外的网络。
2、cri-tools(容器运行时工具):这是一个 用于与Kubernetes容器运行时接口(CRI)进行交互的命令行工具集。它提供了一些有用的功能,如创建、销毁和管理容器等。
3、ebtables(以太网桥规则管理工具):这是一个用于在Linux系统中管理以太网桥规则的工具。在Kubernetes中,ebtables 用于在网络分区中实现容器之间的隔离和通信。
4、socat(网络工具):这是一个用于在Linux系统中建立各种类型网络连接的工具。在Kubernetes网络中,socat可以 用于创建端口转发、代理和转发等网络连接。
K8S镜像 |
calico镜像 |
registry.k8s.io/kube-apiserver:v1.24.17 |
docker.io/calico/cni:v3.25.0 |
registry.k8s.io/kube-controller-manager:v1.24.17 |
docker.io/calico/kube-controllers:v3.25.0 |
registry.k8s.io/kube-scheduler:v1.24.17 |
docker.io/calico/node:v3.25.0 |
registry.k8s.io/kube-proxy:v1.24.17 |
- |
registry.k8s.io/pause:3.7 |
- |
registry.k8s.io/coredns/coredns:v1.8.6 |
- |
registry.k8s.io/etcd:3.5.6-0 |
- |
三、安装和配置先决条件
3.1、主机名设置
说明:分别在对应的节点IP上设置主机名。
主机IP |
设置主机名 |
192.168.1.63 |
hostnamectl set-hostname k8s-master-63 && bash |
192.168.1.64 |
hostnamectl set-hostname k8s-master-64 && bash |
192.168.1.65 |
hostnamectl set-hostname k8s-master-65 && bash |
192.168.1.66 |
hostnamectl set-hostname k8s-worker-66 && bash |
192.168.1.185 |
hostnamectl set-hostname k8s-lb-01 && bash |
192.168.1.205 |
hostnamectl set-hostname k8s-lb-02 && bash |
3.2、配置主机hosts
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
cat >> /etc/hosts <<EOF
192.168.1.63 k8s-master-63
192.168.1.64 k8s-master-64
192.168.1.65 k8s-master-65
192.168.1.66 k8s-worker-66
EOF
3.3、关闭防火墙
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
ufw disable && systemctl stop ufw && systemctl disable ufw
3.4、关闭swap分区
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
swapoff -a
sed -i '/swap/ s/^/#/' /etc/fstab
3.5、修改系统参数
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
cat >>/etc/security/limits.conf <<