5分钟快速搭建k8s集群1.29.x

  1. 配置主机名和hosts
    配置主机名
    hostnamectl set-hostname node1
    hostnamectl set-hostname node2
    hostnamectl set-hostname node3

    vim /etc/hosts
    172.19.35.202 node1
    172.19.35.203 node2
    172.19.35.204 node3
    测试
    hostname
    ping -c 3 node2

  2. 配置时间同步

  3. 关闭防火墙

    systemctl disable --now firewalld
    

    这两条命令分别用于停止并禁用防火墙(firewalld)和DNS服务(dnsmasq)。

  4. 关闭并禁用SELinux

    setenforce 0
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    

    以上命令会立即将SELinux设置为宽容模式,并在系统配置文件中将SELinux永久禁用。

  5. 关闭并禁用交换分区(swap)

    swapoff -a
    sysctl -w vm.swappiness=0
    sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
    

    这些命令将立即关闭swap分区,设置系统不使用swap,以及在fstab文件中注释掉所有swap相关的行,防止系统重启时重新启动swap。

  6. 配置软件源为阿里云镜像,并安装必要软件(可选)

    sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/rocky-*.repo
    dnf makecache
    yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y
    

    以上命令用于将软件源切换到阿里云镜像,然后安装常用的一些软件工具。

  7. 配置Kubernetes仓库

    cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
    EOF
    

    设置Kubernetes软件仓库,之后可以通过此仓库安装Kubernetes相关组件。

  8. 安装并配置Containerd运行环境
    这一部分是关于安装和配置 containerd 作为 Kubernetes 的容器运行时环境

    1. 安装 containerd(其实这里docker不需要安装)

       sudo yum remove podman buildah
       sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
       sudo yum makecache
       sudo yum install -y docker-ce docker-ce-cli containerd.io
       sudo systemctl start docker
       sudo systemctl enable docker
      

      这条命令通过 yum 包管理器安装 containerd。-y 参数意味着自动同意所有询问,无需手动确认。

    2. 加载内核模块

      cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
      overlay
      br_netfilter
      EOF
      sudo modprobe overlay
      sudo modprobe br_netfilter
      
      • 这部分创建了一个配置文件 /etc/modules-load.d/containerd.conf,在系统启动时自动加载 overlaybr_netfilter 这两个内核模块。
      • overlay 模块支持 overlay 文件系统,这是 Docker 和其他容器技术常用的文件系统类型。
      • br_netfilter 模块用于在网络桥接接口上进行包过滤和NAT功能,这对 Kubernetes 网络是必需的。
    3. 设置网络相关的系统参数

      cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      EOF
      sudo sysctl --system
      
      • 这些参数配置允许在网络桥接时通过 iptables 对数据包进行处理,以及启用 IP 转发。
      • sysctl --system 用来立即应用这些新的系统参数设置。
    4. 配置 containerd

      sudo mkdir -p /etc/containerd
      containerd config default | sudo tee /etc/containerd/config.toml
      
      • 首先创建 containerd 的配置目录。
      • 然后通过 containerd config default 生成默认的配置,并保存到 /etc/containerd/config.toml 文件中。
    5. 修改 containerd 的配置

      sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
      sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
      sed -i 's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
      sed -i 's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
      
      • 修改配置使用 SystemdCgroup = true,这确保 containerd 使用 systemd 管理 cgroup,有助于与 systemd 更好的集成。
      • 替换镜像源地址,将默认的 Kubernetes 镜像源改为阿里云提供的镜像源,这可以提高在中国大陆的访问速度和稳定性。
    6. 启动并使 containerd 自启动

      systemctl daemon-reload
      systemctl enable --now containerd
      
      • daemon-reload 命令让 systemd 重新加载配置文件,包括新安装的服务。
      • enable --now containerd 将 containerd 服务设置为开机自启,并立即启动服务。

    这些步骤共同配置了 containerd 作为 Kubernetes 集群的容器运行时环境,确保了其与系统参数和 Kubernetes 的兼容性,同时优化了网络和镜像源设置以提高效率和响应速度。

  9. 安装Kubernetes组件并初始化集群

    1. 安装 Kubernetes 组件

      yum install kubeadm-1.29.* kubelet-1.29.* kubectl-1.29.* -y
      
      • 使用 yum 安装 kubeadm, kubelet, 和 kubectl。这些组件分别用于初始化 Kubernetes 集群、运行集群的节点、和与集群交互。
      • 版本 1.29.* 确保安装的是特定版本的 Kubernetes。
      • -y 参数自动确认安装过程中的询问。
    2. 启动并设置 kubelet 自启动

      systemctl enable --now kubelet
      
      • kubelet 是在每个节点上运行的核心组件,负责维护容器的生命周期。
      • 此命令使 kubelet 在启动时自动运行。
    3. 预拉取 Kubernetes 集群所需的镜像

      kubeadm config images pull --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version 1.29.4
      
      • 使用 kubeadmimages pull 命令从指定的镜像仓库预先拉取 Kubernetes 运行所需的所有容器镜像。
      • 这里使用的是阿里云的镜像仓库,以提高在中国区的下载速度和稳定性。
    4. 初始化 Kubernetes 集群

      kubeadm init --apiserver-advertise-address 10.0.3.233 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket "unix:///var/run/containerd/containerd.sock" --kubernetes-version 1.29.4
      
      • kubeadm init 是用于初始化集群的主命令。
      • --apiserver-advertise-address 指定 API 服务器将广播到其他集群成员的 IP 地址。
      • --image-repository 为 Kubernetes 集群使用的容器镜像仓库地址。
      • --cri-socket 指定容器运行时的接口,这里使用的是 containerd。
      • --kubernetes-version 指定了安装的 Kubernetes 版本。
    5. 将节点加入到 Kubernetes 集群

      kubeadm join 10.0.3.233:6443 --token cg0bkg.w83qlih44rjby2jk --discovery-token-ca-cert-hash sha256:4efd525d2708c60bd450b0bd3f22a850283738f49b23e04334301a4ca07a1a8f
      
      • 使用 kubeadm join 将其他节点加入到已初始化的 Kubernetes 集群。
      • --token 是用于节点身份验证的安全令牌,保证只有拥有令牌的节点可以加入集群。
      • --discovery-token-ca-cert-hash 是 CA 证书的哈希值,用于节点加入时验证 API 服务器的证书,增强安全性。

相关推荐

  1. 5分钟快速k8s1.29.x

    2024-04-24 15:56:04       13 阅读
  2. (5)快速k8s

    2024-04-24 15:56:04       33 阅读
  3. kubeadm快速k8s

    2024-04-24 15:56:04       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 15:56:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 15:56:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 15:56:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 15:56:04       18 阅读

热门阅读

  1. MySQL中的关键字深入比较:UNION vs UNION ALL

    2024-04-24 15:56:04       12 阅读
  2. 分组排序取第一条数据 SQL写法

    2024-04-24 15:56:04       11 阅读
  3. Redis 大KEY/慢查询问题的排查和解决

    2024-04-24 15:56:04       15 阅读
  4. flutter组件 InheritedWidget

    2024-04-24 15:56:04       14 阅读
  5. leetcode922-Sort Array By Parity II

    2024-04-24 15:56:04       11 阅读
  6. 图书借阅系统开发笔记

    2024-04-24 15:56:04       11 阅读
  7. i18n在VUE3中使用插槽动态传入组件

    2024-04-24 15:56:04       10 阅读
  8. 【Mysql】Mysql8存储引擎优化与锁和事务管理优化

    2024-04-24 15:56:04       12 阅读
  9. gitea的简单介绍

    2024-04-24 15:56:04       13 阅读