当前位置: 首页 > news >正文

kubeadm方式部署 k8s 1.21

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。

目录

前言

一、基础知识

Master 节点需要安装的内容

Node 节点需要安装的内容

二、具体操作

1.准备工作

(1)关 swap

(2)内核参数调优(必做)

(3)并安装 bridge 模块:

(4)容器 runtime

2.安装kubelet

(1)创建临时目录

(2)下载 kubeadm/kubelet/kubectl 1.21.10

(3)解压并安装

(4)设置可执行权限

3. 安装 kubeadm, kubelet, kubectl

(1)使用阿里云等国内源安装指定版本的 Kubernetes 组件。

(2) 安装指定版本,例如 1.21.10

(3)验证版本

(4) 阻止这三者被意外升级

(5)启动 kubelet

(6)如需要移除此版本

(7) 预拉取镜像

(8)master执行初始化集群

(9)给它搞个日志

总结


前言

之前做的部署了,很久之前也做过二进制的部署。对比起来,kubedam确实更迅速更方便,个人认为kube-proxy 作为 Pod 运行更省心


一、基础知识

Master 节点需要安装的内容

kubeadm 功能:用来初始化集群(kubeadm init)、加入节点(kubeadm join)、升级集群等。

kubelet 功能:负责节点上 Pod 的生命周期管理。

kubectl 功能:命令行客户端,用于操作 Kubernetes API。

container Runtime 功能:kubelet 需要容器运行时来启动 Pod。

CNI插件(Calico/Flannel) 功能:Pod 网络通信。

Node 节点需要安装的内容

kubeadm 功能:用 kubeadm join 将节点加入集群。

kubelet 功能:管理 Node 上的 Pod 生命周期,与 Master 通信。

kubectl(可选) 功能:Node 节点不一定需要安装 kubectl,但方便调试,可以安装。

Container Runtime 功能:Node 节点的核心依赖,所有 Pod 都需要通过容器运行时启动。

CNI 插件 功能:Node 节点需要 CNI 插件,Pod 网络才会正常工作。

二、具体操作

1.准备工作

(1)关 swap

sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

(2)内核参数调优(必做)

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness = 0 EOF sudo sysctl --system

(3)并安装 bridge 模块:

sudo modprobe br_netfilter echo br_netfilter | sudo tee /etc/modules-load.d/br_netfilter.conf

(4)容器 runtime

sudo apt-get install containerd -y sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd

2.安装kubelet

(1)创建临时目录

mkdir -p /tmp/k8s && cd /tmp/k8s

(2)下载 kubeadm/kubelet/kubectl 1.21.10

curl -LO https://dl.k8s.io/v1.21.10/kubernetes-node-linux-amd64.tar.gz

(3)解压并安装

tar -xzvf kubernetes-node-linux-amd64.tar.gz sudo cp kubernetes/node/bin/kubeadm /usr/local/bin/ sudo cp kubernetes/node/bin/kubelet /usr/local/bin/ sudo cp kubernetes/node/bin/kubectl /usr/local/bin/

(4)设置可执行权限

sudo chmod +x /usr/local/bin/kubeadm /usr/local/bin/kubelet /usr/local/bin/kubectl sudo mkdir -p /etc/systemd/system/kubelet.service.d
cat <<EOF | sudo tee /etc/systemd/system/kubelet.service [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=https://kubernetes.io/docs/home/ Wants=network-online.target After=network-online.target [Service] ExecStart=/usr/local/bin/kubelet Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reexec sudo systemctl start kubelet sudo systemctl enable kubelet

3. 安装 kubeadm, kubelet, kubectl

(1)使用阿里云等国内源安装指定版本的 Kubernetes 组件。

sudo apt-get update && sudo apt-get install -y apt-transport-https curl

# 添加 Kubernetes 阿里云 GPG **

curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

# 添加 Kubernetes 阿里源

sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF sudo apt-get update

(2) 安装指定版本,例如 1.21.10

sudo apt-get install -y kubelet=1.21.10-00 kubeadm=1.21.10-00 kubectl=1.21.10-00

(3)验证版本

kubeadm version kubelet --version kubectl version --client

(4) 阻止这三者被意外升级

sudo apt-mark hold kubelet kubeadm kubectl

(5)启动 kubelet

sudo systemctl start kubelet sudo systemctl enable kubelet

(6)如需要移除此版本


这一步是防止临时要改版本而记录的,如果不需要,直接去执行7就行。

查看被锁定的包:会显示出所有包的名字

sudo apt-mark showhold

取消锁定

sudo apt-mark unhold kubelet kubeadm kubectl

移除

sudo apt-get remove -y kubelet kubeadm kubectl

(7) 预拉取镜像

kubeadm config images pull --kubernetes-version=v1.21.10

(8)master执行初始化集群

sudo kubeadm init \ --kubernetes-version=v1.21.10 \ --pod-network-cidr=192.168.0.0/16

(9)给它搞个日志

sudo kubeadm init --kubernetes-version=v1.21.10 --pod-network-cidr=192.168.0.0/16 |& tee kubeadm-init.log

注意:这里 pod 网络要写 192.168.0.0/16,Calico 默认就是这个网段。--pod-network-cidr 不是指你服务器的 IP 段,而是 集群中 Pod 所使用的虚拟网络段,必须和宿主机实际使用的网段 不冲突。集群启用后慎用init这个命令,会初始化所有内容


总结

大概一年前部署的,没有及时记录成文章,找都不好找,再也不偷懒了,补上补上,都补上!

http://www.jsqmd.com/news/827865/

相关文章:

  • FontForge入门指南:从零开始设计你的第一套字体
  • 从数据同步工具往后看,NineData 社区版 V5.0.0 这次补齐了什么
  • AUBO机械臂视觉跟踪避坑指南:手眼标定后,如何让末端稳定跟随移动的ArUco码?
  • AI Gateway:统一管理与调度多模型API的开源代理网关实战
  • Pearcleaner:重新定义macOS应用清理的智能解决方案
  • 支付宝立减金用不完?教你一招整合回收,轻松盘活 - 可可收
  • 同样1000字ChatGPT把AI率降35%、专业降AI软件能降86%!选错工具论文AI率还差50个点
  • RAG应用Web界面开发:可视化调试与性能优化实践
  • 2025届最火的AI辅助论文方案横评
  • N32G45x双ADC规则同步模式实战:精准电源监测与Vrefint基准联采
  • 【基于Xilinx ZYNQ7000与PYNQ的嵌入式AI实践】从零构建实时人脸识别系统
  • Polymarket预测市场模拟交易沙盒:零风险学习DeFi交易策略开发
  • 视觉检测设备怎么选?5家主流品牌综合对比与选型指南 - 一搜百应
  • 告别EasyConnect连接失败:一份给Ubuntu新手的依赖库降级保姆级教程
  • Termux实战:无根Kali Nethunter安装避坑与网络优化指南
  • CTFHUB-网站源码泄露实战:从备份文件到Flag获取
  • 终极HS2汉化指南:一键解锁完整中文游戏体验
  • DockDoor终极指南:快速掌握macOS窗口预览与高效切换
  • 2026年4月,国内这些口碑好的实验室综合医疗废水处理设备厂家值得关注,高浓度废水处理设备,医疗废水处理设备厂家哪家好 - 品牌推荐师
  • 传统机VS云手机:云手机是什么?2026云手机推荐
  • Seraphine终极指南:5分钟掌握英雄联盟智能助手免费使用技巧
  • 英雄联盟终极自动化助手:三步掌握LeagueAkari提升游戏体验
  • 在ComfyUI中开启AI视频生成新纪元:打造你的动态内容创作平台
  • FanControl技术架构深度解析:构建Windows平台智能散热控制系统的核心原理与实践
  • Power Query处理月度报表,遇到数据有null怎么办?详解【标准】运算与自定义列的计算逻辑差异
  • Java 异常处理:从“能跑就行“到“优雅规范“的进阶之路
  • 【现场亲历】高德空间智能开放平台重磅发布:从调API到说需求,破解AI落地三大痛点
  • 黑龙江移远科技有限公司核心优势解析 - 黑龙江单工科技
  • 怎样快速删除背景?2026年免费工具实测对比,找到最简单的抠图方法
  • 基于MLX框架在苹果芯片本地部署轻量级聊天机器人实践