• 《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.25.14集群(多主多从)》


    一、部署架构图

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.3、关闭防火墙

    说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

    ufw disable && systemctl stop ufw && systemctl disable ufw
    
    • 1

    3.4、关闭swap分区

    说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

    swapoff -a
    sed -i '/swap/ s/^/#/'  /etc/fstab
    
    • 1
    • 2

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.6、时间时区同步

    说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

    1、设置时区为Asia/Shanghai,如果已经是则请忽略

    root@k8s-master-12:~# timedatectl
                   Local time: 五 2023-03-31 14:11:36 CST
               Universal time: 五 2023-03-31 06:11:36 UTC
                     RTC 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  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.7、修改内核参数

    说明:以下操作无论是master节点、worker节点均需要执行。

  • 相关阅读:
    项目完成小结 - Django3.x版本 - 开发部署小结 (2)
    基于Nodejs和mysql的工具市场客户信息管理系统
    提高 IDC 网络带宽利用率
    【操作系统】考研真题攻克与重点知识点剖析 - 第 2 篇:进程与线程
    Java 面试只是背答案吗?
    JVM_JVM启动参数及堆内存分布及GC触发条件
    Java-GUI编程之Swing组件
    vue基础知识七:SPA首屏加载速度慢的怎么解决?
    C语言实现线索化二叉树(先序、中序、后序)
    数据分析 第二周 (条形图,散点图,直方图,numpy运算和数组广播机制)笔记
  • 原文地址:https://blog.csdn.net/m0_37814112/article/details/133029445