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)操作
hostnamectlset-hostnamemaster01node01(192.168.10.13)操作
hostnamectlset-hostnamenode01node02(192.168.10.14)操作
hostnamectlset-hostnamende02三台主机同时操作
配置阿里云yum源
sudocp/etc/apt/sources.list/etc/apt/sources.list.backuptee/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域名解析
cat>>/etc/hosts << EOF 10.54.149.12 master01 10.54.149.13 node01 10.54.149.14 node02 EOFcat/etc/hosts关闭swap
swapoff-a sed-i'/swap/s/^/#/'/etc/fstab free-h加载内核模块并开启网络转发
cat<<EOF|sudotee/etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfiltercat<<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 EOF sudo sysctl--system安装docker
sudo apt install docker.io util-linux-extra-y sudo systemctlstartdocker sudo systemctl enable docker docker--versionsudotee/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
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-dockerinstall的时候会有一个告警,不用管
安装k8s组件
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.gpgecho"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--versionmaster01(192.168.10.12)操作
k8s群集初始化
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.sockmkdir-p$HOME/.kube sudocp-i/etc/kubernetes/admin.conf$HOME/.kube/config sudo chown $(id-u):$(id-g)$HOME/.kube/confignode节点(192.168.10.13/14)操作
node节点加入k8s群集
token要跟k8s群集初始化的输出结果一样,不要复制我这个
kubeadm join 192.168.10.12:6443--token 16vftw.lnioqd010c3n7tjn \--discovery-token-ca-cert-hash sha256:ded58b64444094269951ce0f1cadc917b8e808accb1b16e3c0b1d6126419b3bf \--cri-socket=unix:///run/cri-dockerd.sock验证
kubectl get nodesNotReady是因为还没安装网络插件
kubectl get pod-Acoredns需要安装calico后才会running
master01(192.168.10.12)操作
安装calico网络插件
下载yaml文件并替换成国内镜像地址
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.yamlkubectl apply-f calico.yaml kubectl get pod-A等待5分钟左右
到这里k8s群集就搭建完了
常见报错
镜像地址拒接连接
这个报错是因为连不到docker官方镜像,需要转到阿里云镜像
镜像路径冲突
这个报错是因为地址冲突,需要改cri-dockerd 的系统服务配置文件的路径
kube-proxy起不来
kube-proxy没起来是因为pod所在node节点没有改cri-dockerd 的系统服务配置文件的路径
报错后重置配置命令
sudo kubeadm reset--cri-socket=unix:///run/cri-dockerd.sock--force sudorm-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就行。写在博客里就有些冗余了。
如果部署中还有其他问题评论即可。
