一、部署架构图
1、架构图如下所示:
2、部署流程图如下所示:
二、环境信息
- 1、资源下载
基于外部etcd+部署容器版kubernetes1.25.14集群资源合集
- 2、部署规划
主机名 | 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 |
- 3、集群网段
宿主机 | 集群Pod网段 | 集群Service网段 |
---|---|---|
192.168.1.0/24 | 10.48.0.0/16 | 10.96.0.0/16 |
说明:Kubernetes高可用集群基于kubeadm工具部署,其中etcd集群采用二进制方式部署。由于测试机器数量有限,etcd服务部署在master节点上,你可以根据自己需要,使用单独的主机部署etcd集群服务。
- 4、基础软件版本
软件 | 版本 | 安装方式 |
---|---|---|
etcd | 3.5.6 | 二进制 |
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地址、端口号等。
- 5、容器镜像版本
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 | - |
K8S版本与calico版本对应关系,如下所示:
calico版本 | calico yml文件下载 | 支持K8S版本 |
---|---|---|
v3.24.6 | calico.yml | v1.22、v1.23、v1.24、v1.25 |
v3.25.2 | calico.yml | v1.23、v1.24、v1.25、v1.26 |
v3.26.1 | calico.yml | v1.24、v1.25、v1.26、v1.27 |
三、安装和配置先决条件
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 | hostnamectl set-hostname k8s-lb-01 && bash |
192.168.1.17 | hostnamectl set-hostname k8s-lb-02 && bash |
3.2、配置主机hosts
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
cat >> /etc/hosts <<EOF
192.168.1.12 k8s-master-12
192.168.1.13 k8s-master-13
192.168.1.14 k8s-master-14
192.168.1.15 k8s-worker-15
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 <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
* soft memlock unlimited
* hard memlock unlimited
EOF
3.6、时间时区同步
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
1、设置时区为Asia/Shanghai,如果已经是则请忽略
root@k8s-master-12:~# timedatectlLocal time: 五 2023-03-31 14:11:36 CSTUniversal time: 五 2023-03-31 06:11:36 UTCRTC time: 五 2023-03-31 06:11:36 Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes NTP service: active RTC in local TZ: no
3.7、修改内核参数
说明:以下操作无论是master节点、worker节点均需要执行。