Kubernetes v1.24集群安装配置步骤总结

一、环境准备

(一)系统要求

  • 运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。
  • 每台机器内存2GB以上,内存不足会限制应用运行。
  • 控制平面节点的计算机至少有2个CPU。
  • 集群中所有计算机之间有完全的网络连接,可使用公共网络或专用网络。

(二)主机环境配置(以Ubuntu 20.04为例)

  1. 系统安装
    • 下载Ubuntu 20.04.4镜像:https://mirrors.aliyun.com/ubuntu-releases/20.04.4/ubuntu-20.04.4-live-server-amd64.iso。
  2. 修改镜像源
    • 将默认镜像源http://cn.archive.ubuntu.com/ubuntu修改为清华大学镜像源https://mirrors.tuna.tsinghua.edu.cn/ubuntu
    • 修改方式
      • 安装虚拟机时直接修改镜像地址。
      • 已安装系统时,修改/etc/apt/sources.list文件,替换地址后执行sudo apt-get update(修改前先备份文件)。
  3. 安装Docker 20.10.17

二、安装cri-dockerd容器运行时

(一)方式一:二进制文件下载安装

  1. 查看内核信息
    cat /proc/version
    
  2. 下载对应版本
    • 根据内核信息从GitHub Release页面选择文件,例如:https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz。
    • 下载并解压:
    wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz
    tar -zxvf cri-dockerd-0.3.1.amd64.tgz -C /tmp
    sudo cp /tmp/cri-dockerd/cri-dockerd /usr/bin/
    

(二)方式二:通过Docker构建

  1. 下载源码并编译
    git clone https://github.com/Mirantis/cri-dockerd.git
    cd cri-dockerd
    git tag  # 查看可用tag
    git checkout v0.3.1  # 切换到目标版本
    
  2. 创建Dockerfile并构建
    FROM golang:1.18
    ADD ./ /go/src/cri-dockerd
    WORKDIR /go/src/cri-dockerd
    RUN go env -w GOPROXY=https://proxy.golang.com.cn,https://goproxy.cn,direct
    RUN go build -o cri-dockerd
    
    docker build -t cri-dockerd:latest .
    docker run --rm -d -it --name cri-dockerd cri-dockerd:latest bash
    docker cp cri-dockerd:/go/src/cri-dockerd/cri-dockerd ./
    sudo cp cri-dockerd /usr/bin/
    

(三)配置和启动cri-dockerd服务

  1. 获取systemd配置文件
    git clone https://github.com/Mirantis/cri-dockerd.git
    sudo cp cri-dockerd/packaging/systemd/* /etc/systemd/system/
    
  2. 修改服务配置
    • /etc/systemd/system/cri-docker.serviceExecStart字段中添加:
    --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
    
  3. 启动服务
    sudo systemctl daemon-reload
    sudo systemctl enable cri-docker
    sudo systemctl start cri-docker
    sudo systemctl status cri-docker  # 检查状态
    

三、安装kubeadm、kubelet、kubectl

  1. 更新包管理器并安装依赖
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    
  2. 下载gpg密钥
    curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
    
  3. 设置Kubernetes镜像源
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
  4. 安装指定版本(示例:1.24.1)
    sudo apt-get update
    sudo apt-get install -y kubelet=1.24.1-00 kubeadm=1.24.1-00 kubectl=1.24.1-00
    
  5. 锁定版本(防止自动升级)
    sudo apt-mark hold kubelet kubeadm kubectl
    
  6. 检查kubelet状态
    systemctl status kubelet
    

四、主机环境调整

  1. 修改Docker的cgroup driver为systemd
    • 创建或修改/etc/docker/daemon.json,添加:
    {"exec-opts": ["native.cgroupdriver=systemd"]
    }
    
    • 重启Docker:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  2. 关闭防火墙
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  3. 禁用SELinux
    sudo apt install selinux-utils
    getenforce  # 查看状态
    sudo setenforce 0  # 临时禁用
    
  4. 禁用swap
    free  # 查看交换区
    sudo swapoff -a  # 临时关闭
    # 修改/etc/fstab,注释掉swap相关行
    
  5. 修改主机名(以k8s-master1为例)
    • 添加IP映射到/etc/hosts
    127.0.1.1 k8s-master1
    
    • 修改系统主机名:
    sudo hostnamectl set-hostname k8s-master1
    hostname  # 查看主机名
    

五、初始化Master节点(只在master节点做)

  1. 生成默认配置文件
    kubeadm config print init-defaults > init.default.yaml
    
  2. 修改配置文件init.default.yaml
    • 添加或修改以下内容:
    localAPIEndpoint:advertiseAddress: 192.168.88.133  # 替换为实际IP
    nodeRegistration:criSocket: unix:///var/run/cri-dockerd.sockname: k8smaster  # 替换为主机名
    imageRepository: registry.aliyuncs.com/google_containers  # 国内镜像源
    kubernetesVersion: 1.24.1
    networking:podSubnet: 10.244.0.0/16  # flannel默认网络段
    
  3. 拉取镜像
    sudo kubeadm config images pull --config=init.default.yaml
    
  4. 初始化集群
    sudo kubeadm init --config=init.default.yaml
    # 或通过参数初始化
    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.239.146 --cri-socket unix:///var/run/cri-dockerd.sock
    
  5. 配置kubectl
    • 普通用户执行:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    • root用户执行:
    export KUBECONFIG=/etc/kubernetes/admin.conf
    source /etc/profile  # 立即生效
    

六、添加网络组件(以flannel为例)

  1. 下载或应用配置文件
    • 方法一:下载到本地后应用
    wget https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    
    • 方法二:直接应用远程文件(若域名可解析)
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
    
  2. 解决域名解析异常(若出现)
    • 查询raw.githubusercontent.com的IP地址(如185.199.108.133),添加到/etc/hosts
    185.199.108.133 raw.githubusercontent.com
    
  3. 开启kube-proxy的ipvs模式
    kubectl edit -n kube-system cm kube-proxy
    # 修改mode: "ipvs"
    kubectl rollout restart -n kube-system daemonset kube-proxy
    
  4. 查看集群状态
    kubectl get pod --all-namespaces
    kubectl get node
    kubectl get cs
    

七、Node节点初始化与加入集群

(一)环境安装(同Master节点)

  1. 安装Docker和cri-dockerd并启动服务。
  2. 安装kubeadm、kubelet、kubectl。

(二)节点环境修改(同Master节点)

  1. 修改Docker的cgroup driver。
  2. 关闭防火墙、禁用SELinux和swap。

(三)加入集群

  1. 在Master节点获取加入命令
    sudo kubeadm token create --print-join-command
    
  2. 在Node节点执行加入命令(附加cri-socket参数)
    kubeadm join 192.168.239.146:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:bac9b53b18b0bfcb3b923f970771e48d489ed7c77625c8fa3785608c6f191a79 --cri-socket unix:///var/run/cri-dockerd.sock
    

八、重置节点(可选)

sudo kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
sudo rm -rf /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni /etc/cni/net.d $HOME/.kube/config
sudo ipvsadm --clear
sudo ifconfig cni0 down
sudo ip link delete cni0

https://github.com/0voice

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/83337.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/83337.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/83337.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉NeRF

NeRF与3DGS学习 NeRF计算机视觉的问题NeRF定义神经辐射场场景表示基于辐射场的体渲染分层采样优化神经辐射场 基础知识初始化SFM基础矩阵 & 本质矩阵 & 单应矩阵从已经估得的本质矩阵E,恢复出相机的运动R,tSVD 分解 NeRF NeRF资源 计算机视觉的问题 计算…

工业手持PDA终端,有哪些作用?

工业手持PDA终端(便携式数据采集终端),是专为工业场景设计的智能化工具,拥有强大的数据采集和处理能力。通过内置的条码扫描功能,PDA能够快速准确地获取信息,避免了人工录入可能出现的错误,大大…

Spark-TTS: AI语音合成的“变声大师“

嘿,各位AI爱好者!还记得那些机器人般毫无感情的合成语音吗?或者那些只能完全模仿但无法创造的语音克隆?今天我要介绍的Spark-TTS模型,可能会让这些问题成为历史。想象一下,你可以让AI不仅说出任何文字&…

C++链式调用与Builder模式

在C++中实现链式调用(如 a.b().c().d())的关键是让每个成员函数返回对象的引用(通常是 *this),从而允许连续调用其他成员函数。这种模式常见于方法链(Method Chaining)或流式接口(Fluent Interface)。下面是实现链式调用的具体方法和示例: 实现原理 返回对象引用:每…

SQL的查询优化

1. 查询优化器 1.1. SQL语句执行需要经历的环节 解析阶段:语法分析和语义检查,确保语句正确;优化阶段:通过优化器生成查询计划;执行阶段:由执行器根据查询计划实际执行操作。 1.2. 查询优化器 查询优化器…

结构型设计模式之桥接模式

文章目录 1. 桥接模式概述2. 模式结构3. 桥接模式的优缺点优点缺点 4. 桥接模式的应用场景5. C#代码示例5.1 简单示例 - 形状与颜色5.2 更复杂的示例 - 跨平台消息发送系统 6. 桥接模式与其他模式的比较7. 真实世界中的桥接模式应用7.1 数据库驱动7.2 UI框架中的渲染机制 8. 桥…

SolidWorks建模(U盘)- 多实体建模拆图案例

这个U盘模型并不是一个多装配体,它是一个多实体零件,它是在零件模式下创建的这些多实体的零部件。按右键解除爆炸就可以装配到一起,再按右键爆炸,就能按照之前移动的位置进行炸开 爆炸视图直接展示 模型案例和素材或取&#xff08…

计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解

引言 在当今数字化时代,计算机已经渗透到我们生活的方方面面,从智能手机到超级计算机,从智能家居到自动驾驶汽车。然而,你是否曾好奇过,这些功能强大的设备内部究竟是如何工作的?是什么让计算机能够执行各种…

SystemVerilog—Interface语法(二)

在SystemVerilog中,接口(interface)是一种封装信号集合、协议逻辑和通信行为的复合结构。其核心定义内容可分为以下十类: 1. 信号声明 基础信号:可定义逻辑(logic)、线网(wire&…

DAY43打卡

浙大疏锦行 kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 fruit_cnn_project/ ├─ data/ # 存放数据集(需手动创建,后续放入图片) │ ├─ train/ …

[蓝桥杯C++ 2024 国 B ] 立定跳远(二分)

题目描述 在运动会上,小明从数轴的原点开始向正方向立定跳远。项目设置了 n n n 个检查点 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots , a_n a1​,a2​,⋯,an​ 且 a i ≥ a i − 1 > 0 a_i \ge a_{i−1} > 0 ai​≥ai−1​>0。小明必须先后跳跃到每个检查…

LINUX530 rsync定时同步 环境配置

rsync定时代码同步 环境配置 关闭防火墙 selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUXdisable设置主机名 hostnamectl set-hostname code hostnamectl set-hostname backup设置静态地址 cd /etc/sysconfi…

鸿蒙OSUniApp结合机器学习打造智能图像分类应用:HarmonyOS实践指南#三方框架 #Uniapp

UniApp结合机器学习打造智能图像分类应用:HarmonyOS实践指南 引言 在移动应用开发领域,图像分类是一个既经典又充满挑战的任务。随着机器学习技术的发展,我们现在可以在移动端实现高效的图像分类功能。本文将详细介绍如何使用UniApp结合Ten…

【Redis】大key问题详解

目录 1、什么是大key2、大key的危害【1】阻塞风险【2】网络阻塞【3】内存不均【4】持久化问题 3、如何发现大key【1】使用内置命令【2】使用memory命令(Redis 4.0)【3】使用scan命令【4】监控工具 4、解决方案【1】拆分大key【2】使用合适的数据结构【3】…

redis核心知识点

Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 Lis…

vscode不满足先决条件问题的解决——vscode的老版本安装与禁止更新(附安装包)

目录 起因 vscode更新设置的关闭 安装包 结语 起因 由于主包用的系统是centos的,且版本有点老了,再加上vscode现在不支持老版本的,这对主包来说更是雪上加霜啊 但是主包看了网上很多教程,眼花缭乱,好多配置要改&…

如何成为一名优秀的产品经理(自动驾驶)

一、 夯实核心基础 深入理解智能驾驶技术栈: 感知: 摄像头、雷达(毫米波、激光雷达)、超声波传感器的工作原理、优缺点、融合策略。了解目标检测、跟踪、SLAM等基础算法概念。 定位: GNSS、IMU、高精地图、轮速计等定…

【ISAQB大纲解读】信息隐藏指的是什么

在软件架构中,信息隐藏(Information Hiding) 是核心设计原则之一,由 David Parnas 在 1972 年提出。它强调通过限制对模块内部实现细节的访问,来降低系统复杂度、提高可维护性和可扩展性。在 ISAQB 的学习目标&#xf…

网页前端开发(基础进阶2--JS)

前面学习了html与css,接下来学习JS(JavaScript与Java无关)。 web标准(网页标准)分为3个部分: 1.html主要负责网页的结构(页面的元素和内容) 2.css主要负责网页的表现(…

完全移除内联脚本

说明 日期&#xff1a;2025年5月9日。 内联脚本给跨站脚本攻击&#xff08;XSS&#xff09;留了条路。 示例 日期&#xff1a;2025年5月9日。 如下网页文件a.html&#xff1a; <!-- 内联脚本块 --> <script> function handleClick{ alert("Hello")…