ubuntu2026.04部署k8s1.36版本的傻瓜式教程(注:运行时为docker,网络插件为calico)

ubuntu2026.04部署k8s1.36版本,运行时docker,网络插件calico

    • 环境
      • 操作步骤
          • 修改主机名
      • 三台主机同时操作
          • 配置阿里云yum源
          • 配置host域名解析
          • 关闭swap
          • 加载内核模块并开启网络转发
          • 安装docker
          • 安装docker-cri
          • 安装k8s组件
      • master01(192.168.10.12)操作
          • k8s群集初始化
      • node节点(192.168.10.13/14)操作
          • node节点加入k8s群集
      • master01(192.168.10.12)操作
          • 安装calico网络插件
    • 常见报错
          • 镜像地址拒接连接
          • 镜像路径冲突
          • kube-proxy起不来
    • 总结

环境

Ip 主机名 cpu 内存
192.168.10.12 master01 2c 6G
192.168.10.13 node1 2c 6G
192.168.10.14 node2 2c 6G
组件 版本
Ubuntu Ubuntu 26.04 server
Docker 29.1.3
Kubernetes v1.36.1

本文采用

Docker作为容器运行时

cri-dockerd适配Kubernetes CRI接口

Calico作为CNI网络插件

kubeadm方式部署

注:本文绝大部分都不需要科学上网,只有部分需要从github上面拉文件。

99%的操作直接复制就行,命令都是测试过的。除了k8s初始化的token需要看自己的

操作步骤

修改主机名

master01(192.168.10.12)操作

powershell 复制代码
hostnamectl set-hostname master01

node01(192.168.10.13)操作

powershell 复制代码
hostnamectl set-hostname node01

node02(192.168.10.14)操作

powershell 复制代码
hostnamectl set-hostname nde02

三台主机同时操作

配置阿里云yum源
powershell 复制代码
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.aliyun.com/ubuntu/ resolute main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ resolute-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ resolute-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ resolute-security main restricted universe multiverse
EOF

apt update
配置host域名解析
powershell 复制代码
cat >> /etc/hosts << EOF
10.54.149.12 master01
10.54.149.13 node01
10.54.149.14 node02
EOF
powershell 复制代码
cat /etc/hosts
关闭swap
powershell 复制代码
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
free -h
加载内核模块并开启网络转发
powershell 复制代码
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system
安装docker
powershell 复制代码
sudo apt install docker.io util-linux-extra -y
sudo systemctl start docker
sudo systemctl enable docker
docker --version
powershell 复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker
安装docker-cri
powershell 复制代码
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.4.3/cri-dockerd_0.4.3.3-0.debian-bookworm_amd64.deb
apt install ./cri-dockerd_0.4.3.3-0.debian-bookworm_amd64.deb -y
systemctl enable --now cri-docker.service

sudo sed -i 's|^ExecStart=.*|ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.10.2|' /usr/lib/systemd/system/cri-docker.service
sudo systemctl daemon-reload
sudo systemctl restart cri-docker

install的时候会有一个告警,不用管

安装k8s组件
powershell 复制代码
mkdir -p /etc/apt/keyrings

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key | \
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/ /" |\
tee /etc/apt/sources.list.d/kubernetes.list

apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

kubeadm version
kubectl version --client
kubelet --version

master01(192.168.10.12)操作

k8s群集初始化
powershell 复制代码
kubeadm init \
  --apiserver-advertise-address=192.168.10.12 \
  --image-repository=registry.aliyuncs.com/google_containers \
  --kubernetes-version=v1.36.1 \
  --pod-network-cidr=172.16.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock
powershell 复制代码
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点(192.168.10.13/14)操作

node节点加入k8s群集

token要跟k8s群集初始化的输出结果一样,不要复制我这个

powershell 复制代码
kubeadm join 192.168.10.12:6443 --token 16vftw.lnioqd010c3n7tjn \
        --discovery-token-ca-cert-hash sha256:ded58b64444094269951ce0f1cadc917b8e808accb1b16e3c0b1d6126419b3bf \
        --cri-socket=unix:///run/cri-dockerd.sock

验证

powershell 复制代码
kubectl get nodes

NotReady是因为还没安装网络插件

powershell 复制代码
kubectl get pod -A

coredns需要安装calico后才会running

master01(192.168.10.12)操作

安装calico网络插件

下载yaml文件并替换成国内镜像地址

powershell 复制代码
wget https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/calico.yaml
sed-i 's#docker.io/#docker.m.daocloud.io/#g' calico.yaml
grep "image:" calico.yaml
powershell 复制代码
kubectl apply -f calico.yaml
kubectl get pod -A

等待5分钟左右

到这里k8s群集就搭建完了

常见报错

镜像地址拒接连接

这个报错是因为连不到docker官方镜像,需要转到阿里云镜像

镜像路径冲突

这个报错是因为地址冲突,需要改cri-dockerd 的系统服务配置文件的路径

kube-proxy起不来

kube-proxy没起来是因为pod所在node节点没有改cri-dockerd 的系统服务配置文件的路径

报错后重置配置命令

powershell 复制代码
sudo kubeadm reset --cri-socket=unix:///run/cri-dockerd.sock --force
sudo rm -rf /etc/kubernetes/ /var/lib/kubelet /var/lib/etcd /etc/cni/net.d

总结

现在是北京时间2026/5/23 4:01,博主有点嘎了

如果对你有帮助,就点个关注吧,你的每一个关注都是博主在面试中吹牛的底气

本来没想继续写博客的,感觉ai已经够发达了,博客也没啥存在的必要了,最近也快离职了,想着复习下基础,部署一个最新版的k8s,查了查网上还没有文档,就寻思用ai辅助着部署,结果快给我气笑了,deepseek说ubuntu26.04还没发布,gpt5胡言乱语,最后历经千辛万苦部署完了之后想了想还是写篇博客出来吧。

博客中很多命令原来都有注释方便理解,后面就全删了,一是一个部署也不需要太注意每条命令的作用,二是看博客的估计也不在意注释,都是直接复制粘贴(本人就是),三是这玩意直接问ai就行。写在博客里就有些冗余了。

如果部署中还有其他问题评论即可。

相关推荐
一只大袋鼠3 小时前
SpringBoot 入门学习笔记(二)Web 开发基础
spring boot·笔记·学习
L、2183 小时前
CANN异构计算实践:CPU+NPU协同工作的最佳模式
网络·人工智能·pytorch·python·安全
汤愈韬3 小时前
IP安全 SEC VPN_1_IA阶段各种名词讲解
网络·网络协议·安全·网络安全·security
浮生若城4 小时前
Linux基础I/O(2):理解“一切皆文件”与缓冲区
linux·运维·服务器
kgduu4 小时前
ethers.js学习笔记
javascript·笔记·学习
苏宸啊4 小时前
库的使用和制作
运维·服务器
.柒宇.4 小时前
Zabbix7.0部署完整指南
linux·运维·zabbix·监控
wanhengidc4 小时前
云手机手游搬砖 梦境护卫队
运维·服务器·安全·web安全·智能手机
小小de风呀4 小时前
de风——【从零开始学Linu】 - 基础指令详解(二)
linux·运维·服务器