一、架构图
如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d6e363b413d24680a998e6b596ecb8b6.png#pic_center)
二、环境信息
基于containerd部署容器版kubernetes1.25.14集群资源合集
主机名 |
K8S版本 |
系统版本 |
内核版本 |
IP地址 |
备注 |
k8s-master-12 |
1.25.14 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.12 |
master节点 + etcd节点 |
k8s-master-13 |
1.25.14 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.13 |
master节点 + etcd节点 |
k8s-master-14 |
1.25.14 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.14 |
master节点 + etcd节点 |
k8s-worker-15 |
1.25.14 |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.15 |
worker节点 |
- |
- |
- |
- |
192.168.1.110 |
vip(虚拟ip) |
k8s-lb-01 |
- |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.16 |
Nginx + keepalived |
k8s-lb-02 |
- |
Ubuntu 20.04.5 LTS |
5.15.0-69-generic |
192.168.1.17 |
Nginx + keepalived |
宿主机 |
集群Pod网段 |
集群Service网段 |
192.168.1.0/24 |
10.48.0.0/16 |
10.96.0.0/16 |
软件 |
版本 |
安装方式 |
containerd |
1.7.2 |
apt工具 |
kubeadm、kubectl、kubelet |
v1.25.14 |
apt工具 |
kube-lb(nginx) |
1.22.1 |
二进制 |
keepalived |
v2.2.7 |
二进制 |
使用apt工具安装containerd会一起安装runc,版本信息如下:
软件 |
版本 |
containerd |
1.7.2 |
runc |
1.1.7 |
使用apt工具安装kubeadm、kubectl、kubelet会一起安装cri-tools、ebtables、kubernetes-cni、ebtables、socat、conntrack,版本信息如下:
软件 |
版本 |
conntrack |
1.4.5 |
cri-tools |
1.26.0 |
kubernetes-cni |
1.2.0 |
ebtables |
2.0.11 |
socat |
1.7.3 |
kubeadm |
1.25.14 |
kubectl |
1.25.14 |
kubelet |
1.25.14 |
总结:
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可以 用于创建端口转发、代理和转发等网络连接。
5、conntrack:这是一个用于连接跟踪的内核模块和工具。它允许您跟踪网络连接的状态和信息,如源IP地址、目标IP地址、端口号等。
K8S镜像 |
calico镜像 |
registry.k8s.io/kube-apiserver:v1.25.14 |
docker.io/calico/cni:v3.26.1 |
registry.k8s.io/kube-controller-manager:v1.25.14 |
docker.io/calico/kube-controllers:v3.26.1 |
registry.k8s.io/kube-scheduler:v1.25.14 |
docker.io/calico/node:v3.26.1 |
registry.k8s.io/kube-proxy:v1.25.14 |
- |
registry.k8s.io/pause:3.8 |
- |
registry.k8s.io/coredns/coredns:v1.9.3 |
- |
registry.k8s.io/etcd:3.5.6-0 |
- |
K8S版本与calico版本对应关系,如下所示:
三、安装和配置先决条件
3.1、主机名设置
说明:分别在对应的节点IP上设置主机名。
主机IP |
设置主机名 |
192.168.1.12 |
hostnamectl set-hostname k8s-master-12 && bash |
192.168.1.13 |
hostnamectl set-hostname k8s-master-13 && bash |
192.168.1.14 |
hostnamectl set-hostname k8s-master-14 && bash |
192.168.1.15 |
hostnamectl set-hostname k8s-worker-15 && bash |
192.168.1.16 |
ho |