Ubuntu24系统安装部署最新版K8s(Kubernetes)1.36保姆级详细教程
一、集群节点规划注意Kubernetes 1.36 已经彻底移除 docker shim只能使用 containerd/crun不再支持 docker 直接作为 runtime。软件环境操作系统Ubuntu 24.04.4 LTS 内核6.8.0-138-genericContainerdv2.2.1k8sv1.36.4kubeadmv1.36节点配置主机角色IPCPU内存node1控制平面192.168.5.1016C40Gnode2工作节点192.168.5.1116C40Gnode3工作节点192.168.5.1216C40G注意控制平面至少 2 核、4 GB 内存工作节点至少 2 核、4 GB 内存所有节点使用固定 IP节点之间可以互相访问不要使用公网 IP 作为集群节点通信地址主机名不能重复普通用户 sudo官方推荐方式安装二、设置主机名和 hosts分别在每个节点设置对应主机名例如sudo hostnamectl set-hostname node1所有节点配置/etc/hostssudo tee -a /etc/hosts /dev/null EOF 192.168.5.10 node1 192.168.5.11 node2 192.168.5.12 node3 EOF验证rootnode1:~# hostname node1三、更新系统并安装基础工具sudo apt update sudo apt upgrade -y sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ gpg \ chrony \ socat \ conntrack \ ipset \ ebtables \ ethtool \ lsof四、保持时间同步sudo systemctl enable --now chrony timedatectl status设置时区# 设置时区为上海 sudo timedatectl set-timezone Asia/Shanghai # 验证 timedatectl五、关闭 SwapKubernetes 默认检测到 Swap 时会导致 kubelet 无法正常启动。官方建议关闭 Swap或者额外配置 kubelet 允许 Swap。生产环境建议直接关闭。临时关闭sudo swapoff -a永久关闭sudo sed -i.bak /[[:space:]]swap[[:space:]]/ s/^/#/ /etc/fstab检查free -h swapon --show六、配置内核模块和网络参数加载内核模块sudo tee /etc/modules-load.d/k8s.conf /dev/null EOF overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter配置网络参数sudo tee /etc/sysctl.d/k8s.conf /dev/null EOF net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 1 EOF sudo sysctl --system检查sysctl net.ipv4.ip_forward lsmod | grep br_netfilter预期net.ipv4.ip_forward 1七、安装并配置 containerdsudo apt install -y containerd检查pannode1:~$ sudo ctr version Client: Version: 2.2.1 Revision: Go version: go1.24.4 Server: Version: 2.2.1 Revision: UUID: 9844b409-4c1c-4f55-b0d4-164c16ea759e生成默认配置sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml /dev/null启用 systemd cgroupsudo sed -i \ s/SystemdCgroup false/SystemdCgroup true/ \ /etc/containerd/config.toml确认 CRI 插件没有被禁用sudo grep -n disabled_plugins\|SystemdCgroup /etc/containerd/config.toml预期disabled_plugins [cri]重启并设置开机启动sudo systemctl restart containerd sudo systemctl enable containerd sudo systemctl status containerd --no-pager八、安装 kubeadm、kubelet、kubectl生产环境建议所有节点使用完全相同的 Kubernetes 版本本文主要介绍Kubernetesv1.36的安装。注意Kubernetes 官方已弃用旧的apt.kubernetes.io仓库应使用新的pkgs.k8s.io仓库。sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key \ | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo deb [signed-by/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.36/deb/ / \ | sudo tee /etc/apt/sources.list.d/kubernetes.list安装组件sudo apt update sudo apt install -y kubelet kubeadm kubectl检查版本kubeadm version kubelet --version kubectl version --client锁定版本避免系统升级时自动升级 Kubernetessudo apt-mark hold kubelet kubeadm kubectl启用 kubeletsudo systemctl enable kubelet九、关闭防火墙Ubuntu 默认防火墙工具是ufw底层是 iptables/nftables。k8s 测试环境可以关闭生产环境建议不要完全关闭而是放行集群端口。sudo ufw disable sudo systemctl stop ufw sudo systemctl disable ufw十、禁用IPV6sudo tee /etc/sysctl.d/99-disable-ipv6.conf /dev/null EOF net.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 1 EOF sudo sysctl --system验证cat /proc/sys/net/ipv6/conf/all/disable_ipv6输出1表示已禁用。重启相关服务sudo systemctl restart containerd sudo systemctl restart kubelet十一、使用配置文件进行初始化控制平面相比长命令配置文件更容易保存和后续复用。创建配置文件sudo mkdir -p /etc/kubernetes sudo vim /etc/kubernetes/kubeadm-config.yaml写入apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.5.10 bindPort: 6443 nodeRegistration: criSocket: unix:///run/containerd/containerd.sock kubeletExtraArgs: node-ip: 192.168.5.10 --- apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration kubernetesVersion: v1.36.4 imageRepository: registry.aliyuncs.com/google_containers controlPlaneEndpoint: 192.168.5.10:6443 networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 dnsDomain: cluster.local注意advertiseAddress填控制平面节点 IPnode-ip填本机实际用于集群通信的 IPcontrolPlaneEndpoint是其他节点访问 API Server 的地址podSubnet必须与后续 CNI 网络插件配置一致如果未来计划做高可用controlPlaneEndpoint应填写负载均衡器或稳定 DNS而不是单个节点 IP查看需要拉取的镜像pannode1:~$ sudo kubeadm config images list \ --config/etc/kubernetes/kubeadm-config.yaml registry.aliyuncs.com/google_containers/kube-apiserver:v1.36.4 registry.aliyuncs.com/google_containers/kube-controller-manager:v1.36.4 registry.aliyuncs.com/google_containers/kube-scheduler:v1.36.4 registry.aliyuncs.com/google_containers/kube-proxy:v1.36.4 registry.aliyuncs.com/google_containers/coredns:v1.14.2 registry.aliyuncs.com/google_containers/pause:3.10.2 registry.aliyuncs.com/google_containers/etcd:3.6.8-0先执行预检查:sudo kubeadm init \ --config/etc/kubernetes/kubeadm-config.yaml \ --dry-run执行初始化sudo kubeadm init \ --config/etc/kubernetes/kubeadm-config.yaml如果初始化失败查看日志journalctl -u kubelet -n 100 --no-pager我第一次安装失败查找日志找到了报错信息failed to pull image registry.k8s.io/pause:3.10.1先测试一下是否可拉取镜像sudo crictl pull registry.k8s.io/pause:3.10.1 ctr: failed to resolve image: failed to do request: Head https://europe-west3-docker.pkg.dev/v2/k8s-artifacts-prod/images/pause/manifests/3.10.1?rid0f7a60629231ae3195f59506e39f5118: dial tcp 74.125.142.82:443: i/o timeout说明网络有问题无法下载可以修改为国内镜像地址sudo sed -i s#registry.k8s.io/pause:3.10.1#registry.aliyuncs.com/google_containers/pause:3.10.1# /etc/containerd/config.toml重启 containerdsudo systemctl restart containerd测试拉取apt install -y cri-tools crictl pull registry.aliyuncs.com/google_containers/pause:3.10.1 crictl images | grep pause执行清理后重新初始化sudo kubeadm reset -f sudo rm -rf /etc/cni/net.d sudo rm -rf /var/lib/cni sudo systemctl restart containerd sudo systemctl restart kubelet初始化成功后终端会输出类似下面的 Worker 加入命令kubeadm join 192.168.5.10:6443 \ --token token \ --discovery-token-ca-cert-hash sha256:hash需要保存下命令。十二、配置 kubectl普通用户mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configroot用户export KUBECONFIG/etc/kubernetes/admin.conf十三、Worker 节点加入集群sudo kubeadm join 192.168.5.10:6443 --token xxx \ --discovery-token-ca-cert-hash xxx十四、安装 Calico 网络插件建议安装 Calico Open Sourcev3.32.1。Calico 官方已测试支持 Kubernetes 1.36。安装 Tigera Operator 和 CRDkubectl create -f \ https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/v1_crd_projectcalico_org.yaml kubectl create -f \ https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/tigera-operator.yaml检查 Operatorkubectl get pods -n tigera-operator下载并修改 Calico 配置curl -LO \ https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/custom-resources.yaml查看配置中的 Pod 网段grep -n cidr: custom-resources.yaml修改为sed -i s#192.168.0.0/16#10.244.0.0/16#g \ custom-resources.yaml创建 Calico 资源kubectl create -f custom-resources.yaml查看集群状态kubectl get tigerastatus验证节点状态kubectl get nodes -o wide移除控制平面污点kubectl taint nodes node1 node-role.kubernetes.io/control-plane:NoSchedule-如果遇到calico node event报错calico/node is not ready: BIRD is not ready: BGP not established with 192.168.5.11,192.168.5.12修改Tigera calico网络配置spec: # Configures Calico networking. calicoNetwork: nodeAddressAutodetectionV4: firstFound: false interface: enp1s0应用并重启 calico‑node 使变更生效kubectl apply -f custom-resources.yaml kubectl rollout restart daemonset/calico-node -n calico-system验证kubectl get pods -A -w|grep calico-node十五、测试集群创建测试 Deploymentkubectl create deployment nginx --imagedocker.m.daocloud.io/library/nginx:1.25 kubectl expose deployment nginx --port80 --typeNodePort查看服务kubectl get pods -o wide kubectl get svc nginx访问服务http://192.168.5.10:nodeport

相关新闻

LINGO优化建模:从数学公式到运输问题实战

LINGO优化建模:从数学公式到运输问题实战

1. 从“数学建模”到“LINGO”:为什么它依然是你的秘密武器如果你正在准备数学建模竞赛,或者在工作中遇到了需要优化决策的问题,比如“如何安排生产计划成本最低”、“如何设计物流路线效率最高”,那么你大概率会听到一个名字&…

2026/8/29 20:56:04 阅读更多 →
AgentLoop深度详解:拆解大模型智能体核心运行循环,思考‑工具‑观测迭代执行机制25.4

AgentLoop深度详解:拆解大模型智能体核心运行循环,思考‑工具‑观测迭代执行机制25.4

一、前言现在大模型AI智能体已经成为人工智能落地的核心方向,从智能问答、自动化办公、数据分析,到复杂的业务流程自主执行,背后都离不开一个核心底层机制,AgentLoop智能体循环。当我们在使用LangGraph、AutoGPT、AgentScope等主流…

2026/8/29 20:54:35 阅读更多 →
扩散模型与渐进式学习如何破解重叠指纹分离难题

扩散模型与渐进式学习如何破解重叠指纹分离难题

在指纹识别系统中,重叠指纹一直是让算法工程师头疼的经典难题。两个甚至多个指纹在采集时叠在一起,纹线彼此交叠、混淆,导致特征提取结果被严重污染。过去处理这类问题,业界的主流做法是设计方向场约束或稀疏字典,先把…

2026/8/29 19:32:53 阅读更多 →

最新新闻

python学习笔记4.5 ---实现一个图书管理系统(使用容器 类)

python学习笔记4.5 ---实现一个图书管理系统(使用容器 类)

一.只使用容器 # todo 存储书籍信息的列表放到循环外 防止每次循环都刷新 book_list = [] while True:print("""欢迎来到图书管理系统1.添加图书2.根据id修改3.根据id查询4.查询所有图书5.根据id删除某个图书6.退出""")choose = input("请…

2026/8/29 20:56:17 阅读更多 →
Windows 下 STM32MP157‑M4 OpenOCD/GDB 疑难杂症:No registers、10054、UsageFault、编码警告

Windows 下 STM32MP157‑M4 OpenOCD/GDB 疑难杂症:No registers、10054、UsageFault、编码警告

技术博客|面向 STM32MP157 M4 核 LiteOS-M 移植的开发者 一句话结论:M4 跑在内部 SRAM、用 OpenOCD GDB 在 Windows 上调试,坑几乎全在「GDB 与 OpenOCD 的协作方式」上,不在你的代码。 本文把 No registers、10054、UsageFault…

2026/8/29 20:56:17 阅读更多 →
蓝桥杯单片机国赛程序架构与驱动开发实战指南

蓝桥杯单片机国赛程序架构与驱动开发实战指南

1. 从“国赛”到“程序”:一次完整的蓝桥杯单片机项目复盘 最近在整理过往的技术笔记,翻到了当年参加第十届蓝桥杯单片机国赛时写下的程序。看着那些密密麻麻的注释和调试痕迹,很多当时的场景和思考又清晰地浮现出来。蓝桥杯的单片机竞赛&…

2026/8/29 20:56:17 阅读更多 →
蓝桥杯国赛B组真题深度解析:动态规划、DFS与算法实战技巧

蓝桥杯国赛B组真题深度解析:动态规划、DFS与算法实战技巧

1. 项目概述:一次国赛B组真题的深度复盘最近在整理硬盘里的老项目,翻到了2021年第十二届蓝桥杯国赛B组的真题代码。时间过得真快,一晃三年过去了,但当时在赛场上那种紧张、专注,以及面对难题时绞尽脑汁的感觉&#xff…

2026/8/29 20:56:17 阅读更多 →
基于SpringBoot的电缆生产管理系统:架构设计与核心业务实现

基于SpringBoot的电缆生产管理系统:架构设计与核心业务实现

简介:生产管理系统是制造业数字化转型的核心,它通过整合订单、物料、设备和人员信息,实现生产过程的透明化、精细化和可追溯。其核心原理在于将业务流程数据化,利用数据库和业务逻辑层固化生产规则,从而优化排程、控制…

2026/8/29 20:56:17 阅读更多 →
C语言实现《超级玛丽》:从状态机到碰撞检测的硬核游戏开发指南

C语言实现《超级玛丽》:从状态机到碰撞检测的硬核游戏开发指南

简介:游戏开发的核心在于对底层逻辑的掌控,其中状态机是管理游戏流程的关键架构,它通过枚举不同游戏状态(如菜单、进行中、暂停)并利用switch-case结构进行逻辑分发,实现了清晰的流程控制。碰撞检测则是游戏…

2026/8/29 20:55:16 阅读更多 →

日新闻

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:00:24 阅读更多 →
【JavaScript】内存管理-垃圾回收机制-内存泄露

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:00:24 阅读更多 →
Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/29 0:00:24 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/29 18:08:35 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 23:05:07 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/28 19:47:53 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →