Ubuntu24系统安装部署最新版K8s(Kubernetes)1.36保姆级详细教程

发布时间:2026/10/26 0:25:17

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
延伸阅读

更多相关文章

2026/10/25 21:50:06

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

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

2026/10/24 12:03:48

UVC消毒笔嵌入Nordic BLE SoC的完整工程复盘

UVC消毒笔这个品类,前两年市场需求突然就起来了,各路方案商、品牌方、初创团队都往里冲。当时市面上大多数产品还停留在“一颗电池一个升压板一颗灯珠”的阶段,讲究点的加个机械拨杆开关,没了。而“UVC Disinfecting Pen Embeds N…

2026/10/25 18:42:26

Buy My Agent MCP Server:AI Agent搜索与发现工具部署指南

MCP 生态最近越来越热闹,但大多数项目是“做一个 MCP Server”,真正解决“我怎么找到想要的 Agent”这个问题的项目不多。这次要看的这个项目很有意思,标题直接叫Buy My Agent MCP Server,发布在 Hacker News 的 Show HN 上。它做…

2026/10/26 8:41:35

AI搜索优化:提升意图识别与排序算法的实战指南

1. 项目背景与核心价值 在信息爆炸的时代,搜索体验的质量直接决定了用户获取信息的效率。最近我在优化"思阳GEO"项目时发现,传统搜索模式存在三个典型痛点:结果相关性低、排序逻辑不透明、个性化程度不足。这导致用户需要反复调整关…

2026/10/26 8:41:35

模型部署完整性验证:从原理到实践

1. 为什么模型部署总是踩坑?从源头解决完整性验证问题三年前我第一次尝试部署BERT模型时,经历了整整两周的噩梦——推理结果与训练时完全不符,显存莫名泄漏,甚至出现前后两次推理结果不一致的情况。后来发现是模型文件在传输过程中…

2026/10/26 8:41:35

零售业智能客服与数据分析核心技术解析

1. 零售行业智能客服与客户数据分析概述 在零售行业数字化转型浪潮中,智能客服与客户数据分析已成为提升运营效率与用户体验的核心抓手。作为一名深耕零售科技领域多年的从业者,我见证了从传统人工客服到AI驱动的智能交互的完整演进过程。如今的智能客服…

2026/10/26 8:41:35

零售智能客服系统架构设计与客户数据分析实战

1. 零售行业智能客服与客户数据分析概述在零售行业数字化转型浪潮中,智能客服系统与客户数据分析的结合正成为提升运营效率的关键利器。我曾在多个零售项目中部署过这类系统,它们不仅能将客服响应速度提升3-5倍,更重要的是能通过对话数据挖掘…

2026/10/26 8:36:34

Python开源量化交易架构实战:从数据到实盘的完整指南

简介:这份资源是一套基于Python的开源量化交易架构源码包,面向计算机、人工智能、通信工程等专业的高校学生、教师及行业开发者,可用于课程设计、毕业设计、项目立项演示或量化交易入门进阶学习。压缩包共132个文件,约712KB&#…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑