Linux部署k8s(Ubuntu)

环境准备

虚拟机

VirtualBox

Linux镜像文件下载

Ubuntu 25.10

Ubuntu 25.10镜像文件下载

硬件配置

建议配置:2C4G,存储空间400GB

网络配置

桥接模式(相当于独立设备)

桥接模式

启用ssh服务并开放22端口

启用ssh服务

# 安装 OpenSSH 服务(如果尚未安装):sudoapt update sudoaptinstall openssh-server # 启动并启用 SSH 服务:sudo systemctl start sshsudo systemctl enablessh# 确认 SSH 正在监听 22 端口:sudo ss -tulnp |grep :22 

防火墙开放22端口

# 如果 UFW 未启用(推荐):sudo ufw enable# 如果 UFW 已启用,开放 22 端口sudo ufw allow 22/tcp # 检查 UFW 状态:sudo ufw status verbose 

静态ip配置

sudovim /etc/netplan/00-installer-config.yaml # 修改完成之后重启网络sudo netplan apply ================ 修改前 =================# This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: true dhcp6: true match: macaddress: 08:00:27:2d:a1:c0 set-name: enp0s3 version: 2================ 修改前 ==================================== k8s-master节点 修改后 =================# This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: false addresses: - 192.168.31.10/24 routes: - to: default via: 192.168.31.1 nameservers: addresses: [192.168.31.1, 8.8.8.8] dhcp6: false match: macaddress: 08:00:27:2d:a1:c0 set-name: enp0s3 version: 2================= k8s-master节点 修改后 =================================== k8s-node1节点 修改后 =================# This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: false addresses: - 192.168.31.11/24 routes: - to: default via: 192.168.31.1 nameservers: addresses: [192.168.31.1, 8.8.8.8] dhcp6: false match: macaddress: 08:00:27:2d:a1:c0 set-name: enp0s3 version: 2================= k8s-node1节点 修改后 ===================

设置主机名

################ master 节点 ################sudo hostnamectl set-hostname k8s-master ################ master 节点 ################################ node1 节点 ################sudo hostnamectl set-hostname k8s-node1 ################ node1 节点 ################

配置 /etc/hosts

sudo tee -a /etc/hosts <<EOF 192.168.31.10 k8s-master 192.168.31.11 k8s-node1 EOF 

禁用 swap

sudo swapoff -a sudosed -i '/ swap / s/^/#/' /etc/fstab 

启用内核模块 & 调整参数

cat<<EOF|sudotee /etc/modules-load.d/k8s.conf overlay br_netfilter EOFsudo modprobe overlay sudo modprobe br_netfilter cat<<EOF|sudotee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOFsudo sysctl --system 

开放端口

Master节点

# 启用 UFW(如果未启用)sudo ufw enable# 默认允许出站,限制入站sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow 6443/tcp sudo ufw allow 2379:2380/tcp sudo ufw allow 10250/tcp sudo ufw allow 10259/tcp sudo ufw allow 10257/tcp sudo ufw allow 8472/udp sudo ufw allow 30000:32767/tcp # 重新加载sudo ufw reload # 查看状态sudo ufw status verbose 

Node节点

# 启用 UFW(如果未启用sudo ufw enable# 默认允许出站,限制入站sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow 22/tcp sudo ufw allow 10250/tcp sudo ufw allow 8472/udp sudo ufw allow 30000:32767/tcp # 重新加载sudo ufw reload # 查看状态sudo ufw status verbose 

端口详情

端口协议需要节点用途
22TCPAllSSH 远程管理
6443TCPMasterKubernetes API Server
2379-2380TCPMasteretcd 数据库
10250TCPAllKubelet API
10257TCPMasterController Manager
10259TCPMasterScheduler
8472UDPAllFlannel VXLAN(关键!)
30000-32767TCPAllNodePort 服务范围

安装k8s(所有节点)

安装 containerd

# 安装依赖sudoapt update sudoaptinstall -y ca-certificates curl gnupg lsb-release # 清理旧的 Docker 源配置sudorm -f /etc/apt/sources.list.d/docker.list sudorm -f /etc/apt/sources.list.d/download_docker_com_linux_ubuntu.list ################# 添加 Docker GPG 密钥(以下方式二选一) ################## 第一种方式:国内建议(containerd 来自 阿里云镜像加速)sudoinstall -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg |sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudochmod a+r /etc/apt/keyrings/docker.gpg # 第二种方式:需要支持访问外网(containerd 来自 Docker 官方仓库)sudoinstall -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudochmod a+r /etc/apt/keyrings/docker.gpg ########################################################################## 添加仓库echo\"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable"|sudotee /etc/apt/sources.list.d/docker.list > /dev/null # 下载containerdsudoapt update sudoaptinstall -y containerd.io # 配置 containerdsudomkdir -p /etc/containerd containerd config default |sudotee /etc/containerd/config.toml # 修改 config.toml:将 SystemdCgroup = false 改为 truesudosed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml # 重启 containerdsudo systemctl restart containerd sudo systemctl enable containerd 

安装 kubeadm、kubelet、kubectl

方案一:支持访问外网

# 添加 Kubernetes APT 仓库(使用 Google Cloud 官方源)sudoapt update sudoaptinstall -y apt-transport-https ca-certificates curlcurl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo"deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main"|sudotee /etc/apt/sources.list.d/kubernetes.list sudoapt update sudoaptinstall -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 
如果这一步报错:curl: (28) Failed to connect to packages.cloud.google.com port 443 after 148795 ms: Could not connect to server. ------------ 表示无法访问外网,直接用方案二

方案二:国内建议

sudorm -f /etc/apt/sources.list.d/kubernetes.list sudorm -f /etc/apt/keyrings/kubernetes-archive-keyring.gpg sudomkdir -p /etc/apt/keyrings sudorm -f /etc/apt/keyrings/kubernetes-aliyun.gpg &&\curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/deb/Release.key |\sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-aliyun.gpg echo"deb [signed-by=/etc/apt/keyrings/kubernetes-aliyun.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/deb/ /"|sudotee /etc/apt/sources.list.d/kubernetes.list sudoapt update sudoaptinstall -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 

修改kubectl镜像源(可选,国内建议)

sudovim /etc/containerd/config.toml #################### 修改1.找到以下配置 ######################[plugins.'io.containerd.cri.v1.images'.pinned_images]#################### 将sanbox的value修改为以下值 ########################### sandbox ='registry.aliyuncs.com/google_containers/pause:3.10.1'#################### 修改2.找到以下配置 ######################[plugins.'io.containerd.cri.v1.images'.registry]#################### 将config_path的value修改为以下值 ########################### config_path ='/etc/containerd/certs.d'#################### 修改3 #############################sudomkdir -p /etc/containerd/certs.d/docker.io sudotee /etc/containerd/certs.d/docker.io/hosts.toml <<EOF server = "https://registry-1.docker.io" [host."https://docker.m.daocloud.io"] capabilities = ["pull", "resolve"] EOF###################### 重启container ######################sudo systemctl restart containerd 

初始化 Master 节点

第一步:初始化kubeadm

方式一:支持访问外网
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.31.10 
方式二:国内建议
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.31.10 --image-repository=registry.aliyuncs.com/google_containers 

注意事项

--pod-network-cidr 根据你后续要安装的 CNI 插件设定。这里以 Flannel 为例(使用 10.244.0.0/16)。生产环境建议使用 Calico

常见报错解决

报错:[ERROR FileExisting-conntrack]: conntrack not found in system path

原因:缺少 conntrack 工具。
解决:安装 conntrack 包:

sudoapt update sudoaptinstall -y conntrack 

第二步:配置kubectl

初始化成功后,按提示配置 kubectl

mkdir -p $HOME/.kube sudocp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudochown$(id -u):$(id -g)$HOME/.kube/config 

安装 CNI 网络插件(Master节点)

Flannel 为例:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml 
PS:碰上网络问题,可以先在浏览器下载->上传到服务器,然后执行 kubectl apply -f kube-flannel.yml

检查网络插件安装情况

kubectl get pods -n kube-flannel ################### 输出类似 ######################### NAME READY STATUS RESTARTS AGE kube-flannel-ds-68fsw 1/1 Running 0 23m kubectl get pods -n kube-system ################### 输出类似 ######################### NAME READY STATUS RESTARTS AGE coredns-855c4dd65d-g2pgd 1/1 Running 0 26m coredns-855c4dd65d-q727j 1/1 Running 0 26m ... # 如果没成功,可以通过查看安装进展定位问题 kubectl describe pod coredns-855c4dd65d-g2pgd -n kube-system 

将 Node 加入集群

Master节点执行

获取 join 命令:

kubeadm token create --print-join-command 

输出类似:

kubeadm join192.168.31.10:6443 --token i50jq7.xxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxx 

Node节点执行

sudo kubeadm join192.168.31.10:6443 --token i50jq7.xxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxx 

常见报错解决

报错:[ERROR FileExisting-conntrack]: conntrack not found in system path

问题:缺少 缺少 conntrack 工具
解决:安装 conntrack

sudoapt update sudoaptinstall -y conntrack 

验证阶段(master节点上验证)

kubectl get nodes ############## OUTPUT ################# NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 30m v1.31.14 k8s-node1 Ready <none> 96s v1.31.14 ############## OUTPUT #################

部署一个测试应用

创建一个简单的 Nginx DeploymentService 来验证调度和网络功能:

# 创建 Deployment kubectl create deployment nginx --image=nginx ############## OUTPUT ################# deployment.apps/nginx created ############## OUTPUT ################## 查看 Pod 是否被调度到工作节点 kubectl get pods -o wide ############## OUTPUT ################# NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-676b6c5bbc-wdz4w 1/1 Running 0 23s 10.244.1.2 k8s-node1 <none><none>############## OUTPUT ################## 暴露服务(可选) kubectl expose deployment nginx --port=80 --type=NodePort ############## OUTPUT ################# service/nginx exposed ############## OUTPUT ################## 查看服务 kubectl get svc nginx ############## OUTPUT ################# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx NodePort 10.97.208.222 <none>80:31301/TCP 5s ############## OUTPUT ################## 访问服务curl -I 192.168.31.11:31301 ############## OUTPUT ################# HTTP/1.1 200 OK Server: nginx/1.29.5 Date: Thu, 12 Feb 2026 02:31:16 GMT Content-Type: text/html Content-Length: 615 Last-Modified: Wed, 04 Feb 202615:12:20 GMT Connection: keep-alive ETag: "698361d4-267" Accept-Ranges: bytes ############## OUTPUT #################

至此,本文分享到此结束!!!

Read more

2026金三银四必看:AI Agent全栈学习路线,三个月从小白到Offer收割机!

2026金三银四必看:AI Agent全栈学习路线,三个月从小白到Offer收割机!

从代码编写者到智能体指挥官,这是大模型时代最确定的职业跃迁 2026年,AI领域迎来“智能体元年”,单纯的大模型调优人才已不再稀缺,掌握AI Agent(智能体)开发的人才正在成为市场上最抢手的资源-1。金三银四已悄然拉开帷幕,如果你还没构建起Agent开发的核心能力,可能错过这波技术红利期-6。 本文将为你提供一份从零到一的实战学习路线,涵盖技术原理、项目实践和面试策略,助你在2026年的就业市场中脱颖而出-5-10。 1. 2026年,为什么必须是AI Agent? 大模型正在从“对话者”转变为“合伙人”-1。GTC2025上,英伟达将“智能体AI”定义为人工智能技术演进的关键阶段-4。2026年的AI Agent已从简单的聊天接口,进化为具备自主逻辑、环境感知与复杂协作能力的数字员工-1。 市场上相关岗位需求激增,面试官对候选人的要求也发生了变化: * 一面(直属Leader):深挖项目细节,如“你如何提升RAG检索召回率”-6 * 二面(总监级):考察方法论,如“从0到1搭建智能体的核心逻辑”-6 * 三面(VP级)

By Ne0inhk

笔记:Ubuntu环境下AMD AI MAX 395+ 使用ROCm加速并本地部署千问Qwen模型

目录 前言 一、ROCm7.0驱动安装 二、Docker环境准备(vLLM) 1. 安装并配置docker 2. 拉取vLLM镜像 2.1 将镜像文件打包进U盘 2.2 加载镜像 三、千问模型部署 1. Qwen3-32B 1.1 下载模型 1.2 启动模型 1.3 验证模型 2. Qwen3-Embedding 2.1 下载模型 2.2 启动模型 2.3 验证模型 3. Qwen3-Reranker 3.1 下载模型 3.2 配置启动脚本与uv管理

By Ne0inhk

几小时完成生鲜配送系统!飞算JavaAI专业版:智能引导+两大工具承包开发全流程

作为一名Java开发者,我曾无数次被「需求拆解难、后期调试烦」的问题困住,最近面对一个生鲜配送系统的开发需求,光梳理业务逻辑、设计表结构就要耗上大半天,后续还要花时间处理代码规范、依赖冲突,往往一周才能拿出可运行的项目。直到试用了飞算JavaAI专业版,才发现AI辅助开发能如此高效:借助它的智能引导系统和两大核心AI工具,我从需求输入到项目初步完成仅需几小时,大大节省了我的时间。 智能引导五步法:让模糊需求快速落地 做生鲜配送系统前,我的需求很简单:「支持用户下单、订单跟踪、配送员调度、库存管理」,但具体怎么拆分模块、设计接口完全没头绪。放在以前,至少要花1天时间和产品经理对接需求文档,而飞算JavaAI的智能引导系统,直接帮我把模糊需求变成了标准化的开发方案。 第一步「理解需求」就超出预期。我在输入框写下核心诉求后,系统10秒内就拆解出几个关键点,还补充了我没考虑到很多功能——比如当生鲜商品临近保鲜期时,系统会自动触发库存预警,异常订单(如地址不明确、支付超时)会自动分流处理,简直像有个资深行业顾问在补位。 第二步「设计接口」根据我的需求创建了繁多的接口供我选择,并且可

By Ne0inhk

AI设计代替UI的工具选择,有免费的使用额度!

AI直接生成UI 设计文件(Figma、Pixso、即时设计等格式)的工具已经很成熟了,作为一个没有ui设计的公司,用这些个工具就非常你测了,以下是主流且实用的选择,按国内 / 国外分类整理: 一、国内主流工具 1. Pixso AI(推荐) * 官网:https://ai.pixso.cn/ * 核心能力:输入文字描述,一键生成可编辑矢量 UI 设计稿,支持转为 Pixso 源文件,可导出 Figma 格式。 * 优势:中文语境优化好,内置 Ant Design、Material 等大厂组件库,生成后可直接编辑、协作,还能导出前端代码。 * 使用:注册后进入 AI 生成,输入需求(如 “设计极简风电商

By Ne0inhk