news 2026/8/25 7:46:10

离线部署kubernetes v1.34.3

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
离线部署kubernetes v1.34.3

离线部署kubernetes v1.34.3

镜像用的在线下载的方式,如果需要完全离线,搭建私有镜像仓库,把需要的镜像上传到镜像仓库。

环境信息

  • virtualbox 虚拟机
  • os: ubuntu 24.04.3
  • kernel: 6.8.0-90-generic
  • 网卡1: 10.0.2.15/fd17:625c:f037:2:a00:27ff:fe3e:462e(网络地址转换NAT,默认网络用于连接互联网)
  • 网卡2: 192.168.56.101/fd00:db1::101(仅主机网络,管理+业务)

安装容器运行时containerd

https://blog.csdn.net/s7799653/article/details/155524556

配置容器运行时 containerd

  1. 首先导出containerd的默认配置文件
mkdir/etc/containerd containerd config default>/etc/containerd/config.toml
  1. 修改pause镜像

测试环境可以用渡渡鸟的容器镜像小站来获取镜像。正式环境建议自己搭建镜像仓库

[plugins] ... [plugins.'io.containerd.grpc.v1.cri'] ... sandbox_image = 'swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/pause:3.10.1'

这里还有一个类似配置是[plugins.'io.containerd.cri.v1.images'.pinned_images],这个是配置在垃圾回收的过程中,不删除这个镜像,这个也是要改的,或者删除这个配置,否则还是会去下载registry.k8s.io/pause:3.10.1。左边的名字只是key,不影响使用,不固定为sandbox,比如固定配置为

[plugins] ... [plugins.'io.containerd.cri.v1.images'.pinned_images] sandbox = 'swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/pause:3.10.1' coredns = 'swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/coredns/coredns:v1.12.1'

重启containerd

systemctl daemon-reload systemctl restart containerd
  1. 配置使用systemd cgroup驱动

https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#cgroup-drivers

cgroup是用来限制容器资源使用的,如cpu、内存等,kubelet 和容器运行时需使用相同的 cgroup 驱动并且采用相同的配置。可用的 cgroup 驱动有两个cgroupfssystemd
cgroupfs 驱动是 kubelet 中默认的 cgroup 驱动。 当使用 cgroupfs 驱动时, kubelet 和容器运行时将直接对接 cgroup 文件系统来配置 cgroup。
当 systemd 是初始化系统时, 不 推荐使用 cgroupfs 驱动,因为 systemd 期望系统上只有一个 cgroup 管理器。 此外,如果你使用 cgroup v2, 则应用 systemd cgroup 驱动取代 cgroupfs 。
要判断 Linux 系统是否以 systemd​ 作为初始化系统(init system),可以通过以下命令:

# 方法 1.1:使用 ps 命令ps-p1-ocomm=# 方法 1.2:直接读取 /proc 文件系统(更简洁)cat/proc/1/comm
  • 如果输出为 systemd,则说明当前系统使用 systemd 作为初始化系统。
  • 如果输出为 init(或其他如 upstart、sysvinit等),则说明不是 systemd。

同时存在两个 cgroup 管理器将造成系统中针对可用的资源和使用中的资源出现两个视图。某些情况下, 将 kubelet 和容器运行时配置为使用 cgroupfs、但为剩余的进程使用 systemd 的那些节点将在资源压力增大时变得不稳定。

[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc] ... [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options] SystemdCgroup = true

配置网络转发

cat<<EOF|sudotee-a /etc/sysctl.d/k8s.confnet.ipv4.conf.all.forwarding = 1 net.ipv6.conf.all.forwarding = 1 EOFsudosysctl --system

安装kubeadm和kubelet

https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

  1. 下载crictl(非必须)

下载:https://github.com/kubernetes-sigs/cri-tools/releases ,解压到/usr/local/bin

  1. 下载并安装kubelet和kubeadm
    kubeadm 的安装是通过使用动态链接的二进制文件完成的,安装时假设你的目标系统提供 glibc。
https://cdn.dl.k8s.io/release/v1.34.3/bin/linux/amd64/kubeadm https://cdn.dl.k8s.io/release/v1.34.3/bin/linux/amd64/kubelet https://cdn.dl.k8s.io/release/v1.34.3/bin/linux/amd64/kubectl

上传到/usr/local/bin

下载kubelet.server10-kubeadm.conf: https://github.com/kubernetes/release,选择最新的release,下载/cmd/krel/templates/latest/kubelet/kubelet.service/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf

sed-i"s:/usr/bin:/usr/local/bin:g"kubelet.servicesed-i"s:/usr/bin:/usr/local/bin:g"10-kubeadm.confcpkubelet.service /usr/lib/systemd/system/kubelet.servicesudomkdir-p /usr/lib/systemd/system/kubelet.service.dcp10-kubeadm.conf /usr/lib/systemd/system/kubelet.service.d# 配置kubelet使用的INTERNAL-IP# /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf添加kubelet启动参数# --node-ip=192.168.56.101

安装kubernetes

  1. 打印默认的kubeadm配置文件
kubeadm config print init-defaults>kubeadm.yml
  1. 修改配置
  • caCertificateValidityPeriodca证书有效期
  • certificateValidityPeriod证书有效期
  • localAPIEndpoint.advertiseAddress修改为集群组件间通讯使用的IP,也就是apiserver listen的IP
  • imageRepository可以下载到镜像的仓库(测试环境,直接写了 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io)
  • networking.podSubnet: 10.244.0.0/16,fd00:db8:244::/56 pod使用的地址池
  • networking.serviceSubnet: 10.96.0.0/16,fd00:db8:96::/112 service的网络地址
  • nodeRegistration.name本机的主机名
  • dns单独指定仓库

使用 imageRepository 所指定的定制镜像库可能与默认的 registry.k8s.io 镜像路径不同。dns的子路径是 registry.k8s.io/core/core:v1.12.1, 但使用自定义仓库时默认为 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/coredns:v1.12.1,就导致镜像无法正常下载。

imageRepository:swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.iodns:imageRepository:swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/corednsimageTag:v1.12.1
  • 不安装kube-proxy
apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration skipPhases: - addon/kube-proxy
  • 禁止controller-manager 给 Node 分配 PodCIDR
controllerManager:extraArgs:-name:allocate-node-cidrsvalue:"false"
  1. 初始化集群
# 允许kubelet自启动systemctlenablekubelet.service kubeadm init --config kubeadm.yml# 配置kubeletmkdir-p$HOME/.kubesudocp-i /etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config
  1. 安装cilium 网络
#下载cilium-clihttps://github.com/cilium/cilium-cli/releases/tag/v0.18.9# 解压到 /usr/local/bin

cilium配置(cilium-conf.yml)

# 完全替代kube-proxykubeProxyReplacement:true# 配置直连apiserver 需要禁用kube-proxyk8sServiceHost:192.168.56.101k8sServicePort:6443# 用于多集群 / 身份隔离cluster:name:k8s-standaloneid:1# 转发架构: native 直接路由,不使用隧道routingMode:native# 自动下发 PodCIDR 路由autoDirectNodeRoutes:trueipv6:enabled:true# 原生设置,表示这一段内的不封装ipv6NativeRoutingCIDR:"fd00:db8:244::/112"ipv4NativeRoutingCIDR:"10.244.0.0/16"# pod ip分配ipam:mode:cluster-pool# ip池,要与kubeadm中配置的一致operator:clusterPoolIPv4PodCIDRList:["10.244.0.0/16"]# 每个节点分配的ipclusterPoolIPv4MaskSize:24# ipv6配置clusterPoolIPv6PodCIDRList:["fd00:db8:244::/56"]clusterPoolIPv6MaskSize:64# 无 kube-proxy 需要启用NodePort功能enableNodePort:true# 性能优化相关bpf:# 高并发,稳定性好lbAlgorithm:maglev# 出集群流量SNATmasquerade:true# 提前分配BPF mappreallocateMaps:true# 安装hubble,可视化hubble:enabled:truerelay:enabled:trueui:enabled:true# 全局镜像配置(影响所有组件,优先级低于组件单独配置)image:repository:"quay.io/cilium/cilium"# 默认官方仓库,可替换为私有仓库地址(如 registry.example.com/cilium/cilium)# Cilium Operator 镜像operator:image:repository:"quay.io/cilium/operator"# 默认 Operator 仓库# Hubble Relay 镜像(若启用 Hubble)hubble:relay:image:repository:"quay.io/cilium/hubble-relay"
# 单节点需要删除taintkubectl taint nodes k8s-standalone node-role.kubernetes.io/control-plane-# 安装ciliuminstall--values cilium-conf.yml

其他配置

kubect 补全

source/usr/share/bash-completion/bash_completionsource<(kubectl completionbash)

可以把上述命令写入~/.bashrc

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 1:17:11

ArcGIS Pro 从入门到实战基础篇(10):地图菜单

在 ArcGIS Pro 中&#xff0c;“地图”菜单是进行地图查看、导航、选择、标注与图层管理的主要工作区&#xff0c;是用户日常制图操作最常用、最核心的菜单之一。 地图菜单的作用 在软件的使用过程中&#xff0c;使用最多的菜单就是“地图”菜单&#xff0c;在这个菜单中囊括…

作者头像 李华
网站建设 2026/8/24 8:30:22

Kotaemon与Redis/Memcached集成:构建高速缓存层

Kotaemon与Redis/Memcached集成&#xff1a;构建高速缓存层 在如今智能客服、企业知识助手和行业问答系统日益普及的背景下&#xff0c;用户对响应速度的要求越来越高——“秒回”已成基本标准。然而&#xff0c;一个典型的检索增强生成&#xff08;RAG&#xff09;流程往往涉…

作者头像 李华
网站建设 2026/8/24 11:40:52

【鸿蒙三方库编译】lycium_plusplus(lycium++)高效完成鸿蒙C/C++编译

lycium_plusplus介绍 项目地址 lycium 是基于openharmony cpp 编译框架lycium的增强 主要包含以下几个目标&#xff1a; 针对目标产物&#xff0c;构建依赖关系树&#xff0c;一键构建对于三方库的HPKBUILD&#xff0c;提供多版本构建能力&#xff0c;代码仓脱离本仓独立发…

作者头像 李华
网站建设 2026/8/21 14:19:02

2025年度GEO服务商权威甄选指南:技术深度与商业价值的双重考量

当一家高端智能家居品牌在三个月内将AI搜索推荐率从行业寂寂无名提升至头部阵营时&#xff0c;其市场总监只说了八个字&#xff1a;“这不是优化&#xff0c;是重构。”随着AIGC从技术演示走向规模化应用&#xff0c;一个品牌的“数字存在”正被彻底改写。权威咨询机构Gartner在…

作者头像 李华
网站建设 2026/8/25 6:20:43

收藏备用!Java程序员转AI大模型:从技术沉淀到AI爆发的进阶之路

AI大模型的规模化应用&#xff0c;正在重构技术人才的价值坐标系。对于深耕Java技术栈的程序员而言&#xff0c;这绝非“被替代”的危机&#xff0c;而是一场基于技术沉淀的“顺势突围”。你在企业级开发中锤炼的架构思维、工程化能力&#xff0c;将成为大模型从技术原型走向产…

作者头像 李华
网站建设 2026/8/22 15:37:58

Python 爬虫实战:Session 会话维持爬取需登录内容

摘要 本文聚焦 Python 爬虫中 Session 会话维持技术&#xff0c;针对需登录访问的网站数据爬取场景&#xff0c;深入解析 Session 的核心工作原理、会话维持机制及实战应用方案。实战验证基于GitHub 个人仓库页&#xff08;需登录访问的私密资源场景&#xff09;&#xff0c;读…

作者头像 李华