当前位置: 首页 > news >正文

25年12月最新k8s V1.35.0版本离线部署教程(单主节点),包一次成功

1、安装前准备

安装有docker的虚拟机或服务器,linux64位系统即可,我这里用的opencloudos9.2, 首先要关闭防火墙,至于selinux还有swap,我这里都是保留的系统默认设置

# 停止服务+禁用开机自启
systemctl stop firewalld && systemctl disable firewalld

2、下载kubectl、kubele、kubectl

# 查询最新版本号
https://cdn.dl.k8s.io/release/stable.txt
# 下载最新版本
wget https://cdn.dl.k8s.io/release/v1.35.0/bin/linux/amd64/kubeadm
wget https://cdn.dl.k8s.io/release/v1.35.0/bin/linux/amd64/kubelet
wget https://cdn.dl.k8s.io/release/v1.35.0/bin/linux/amd64/kubectl# kubeadm可执行权限, 并查看当前kubeadm所需的镜像列表
chmod +x kubeadm[root@localhost download]# ./kubeadm config images list --kubernetes-version=v1.35.0
registry.k8s.io/kube-apiserver:v1.35.0
registry.k8s.io/kube-controller-manager:v1.35.0
registry.k8s.io/kube-scheduler:v1.35.0
registry.k8s.io/kube-proxy:v1.35.0
registry.k8s.io/coredns/coredns:v1.13.1
registry.k8s.io/pause:3.10.1
registry.k8s.io/etcd:3.6.6-0# 然后切换镜像源下载
docker pull k8s.mirror.nju.edu.cn/kube-apiserver:v1.35.0
docker pull k8s.mirror.nju.edu.cn/kube-controller-manager:v1.35.0
docker pull k8s.mirror.nju.edu.cn/kube-scheduler:v1.35.0
docker pull k8s.mirror.nju.edu.cn/kube-proxy:v1.35.0
docker pull k8s.mirror.nju.edu.cn/coredns/coredns:v1.13.1
docker pull k8s.mirror.nju.edu.cn/pause:3.10.1
# 这个最新版本有点坑,它居然要同时准备pause:3.10.1和3.10版本,不然启动不起来
docker pull k8s.mirror.nju.edu.cn/pause:3.10
docker pull k8s.mirror.nju.edu.cn/etcd:3.6.6-0# 重命名镜像
docker tag k8s.mirror.nju.edu.cn/kube-apiserver:v1.35.0 registry.k8s.io/kube-apiserver:v1.35.0
docker tag k8s.mirror.nju.edu.cn/kube-controller-manager:v1.35.0 registry.k8s.io/kube-controller-manager:v1.35.0
docker tag k8s.mirror.nju.edu.cn/kube-scheduler:v1.35.0 registry.k8s.io/kube-scheduler:v1.35.0
docker tag k8s.mirror.nju.edu.cn/kube-proxy:v1.35.0 registry.k8s.io/kube-proxy:v1.35.0
docker tag k8s.mirror.nju.edu.cn/coredns/coredns:v1.13.1 registry.k8s.io/coredns/coredns:v1.13.1
docker tag k8s.mirror.nju.edu.cn/pause:3.10.1 registry.k8s.io/pause:3.10.1
docker tag k8s.mirror.nju.edu.cn/pause:3.10 registry.k8s.io/pause:3.10
docker tag k8s.mirror.nju.edu.cn/etcd:3.6.6-0 registry.k8s.io/etcd:3.6.6-0

3、移动kubeadm kubelet kubectl

我这里是移动到/usr/local/bin下的,这个位置先记住,跟后面的service文件有关

chmod +x kubeadm kubelet kubectl
cp kubeadm kubelet kubectl /usr/local/bin/

4、安装cri-dockerd 服务,这个可以单独先安装,也可以现在安装,以为它是独立于kubeadm、kubelete、和kubectl的安装而存在的

4.1 下载和移动cri-dockerd

# k8s 1.2.4版本过后,如果使用docker做cri,需要再安装cridockerd
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.21/cri-dockerd-0.3.21.amd64.tgz
tar zxf cri-dockerd-0.3.21.amd64.tgz
# 注意,这里拷贝到哪个路径,后面cri-docker.service文件里面的execstart就要指向哪个路径
cp cri-dockerd/cri-dockerd /usr/local/bin/

4.2 cri-docker.service文件和cri-docker.socket文件

这两个文件来自https://github.com/Mirantis/cri-dockerd/tree/master/packaging/systemd

4.2.1 创建cri-docker.service
vi /usr/lib/systemd/system/cri-docker.service

cri-docker.service文件

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket[Service]
Type=notify
# 唯一需要修改的就是这里这一行ExecStart后面的内容,因为前面cri-dockerd的位置是/usr/local/bin/cri-dockerd,所以这里也是/usr/local/bin/cri-dockerd
# --container-runtime-endpoint unix:///var/run/cri-dockerd.sock这个也要保留
ExecStart=/usr/local/bin/cri-dockerd --container-runtime-endpoint unix:///var/run/cri-dockerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
Delegate=yes
KillMode=process[Install]
WantedBy=multi-user.target

创建cri-docker.socket文件

vi /usr/lib/systemd/system/cri-docker.socket

cri-docker.socket文件

[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker[Install]
WantedBy=sockets.target

5.启动cri-dockerd并且设置开机启动

# 创建docker用户组
groupadd dockersystemctl daemon-reload# 先启动cri-docker.socket(因为cri-docker.service依赖它)
systemctl start cri-docker.socket# 再启动cri-docker.service
systemctl start cri-docker.servicesystemctl enable cri-docker --now;
#查看状态
systemctl is-active cri-docker

6.kubectl.service创建

cat <<EOF | tee /usr/lib/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target[Service]
ExecStart=/usr/local/bin/kubelet 
Restart=always
StartLimitInterval=0
RestartSec=10[Install]
WantedBy=multi-user.target
EOF

设置该服务自启动

# kubectl 服务自启动设置
systemctl enable kubelet.service

6.kubeadm配置文件

mkdir -p /usr/lib/systemd/system/kubelet.service.d# 创建 kubeadm 配置文件
cat <<EOF | tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/local/bin/kubelet \$KUBELET_KUBECONFIG_ARGS \$KUBELET_CONFIG_ARGS \$KUBELET_KUBEADM_ARGS \$KUBELET_EXTRA_ARGS
EOF

7、初始化主节点

这里的-apiserver-advertise-address=10.62.170.178 ip地址需要改成你自己虚拟机的ip地址

kubeadm init \
--apiserver-advertise-address=10.62.170.178 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock

8、设置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

9、安装网络服务

因为上一步安装完成过后,kubectl get nodes 得到的结果肯定是notready,我在网上看到有很多可以安装的网络服务,尝试使用最新的kube-flannel.yaml发现还是不得行,就换成了calico.yaml,
等待30s过后,主节点就成了ready状态,无需额外设置

kubectl apply -f https://github.com/projectcalico/calico/blob/master/manifests/calico.yaml
http://www.gsyq.cn/news/162889.html

相关文章:

  • 银河麒麟V10终极网络调试工具完整安装指南
  • 5步掌握Intel RealSense深度摄像头:从安装到实战应用
  • 教师节尊师重教:教育工作者认证享永久折扣
  • Vibe Draw三维建模工具:5分钟快速部署终极指南
  • SeedVR视频修复神器:让模糊视频瞬间焕发新生
  • TensorFlow高级API Keras入门:快速构建神经网络
  • 微信小程序UI设计革命:WeUI-WXSS让你的应用瞬间拥有原生体验
  • Windows 10存储空间终极优化:Compactor文件压缩完全指南
  • 2025最新!专科生必备10个AI论文工具:开题报告与文献综述全测评
  • TensorFlow梯度裁剪技术详解:稳定训练的关键
  • 螺旋输送机厂家哪家综合实力强?2025年终五大品牌权威对比与最终推荐! - 品牌推荐
  • 2025年高尔夫会籍买卖源头商家推荐,高尔夫会籍高价买卖与交易企业全解析 - 工业品网
  • IPv6 hosts管理工具:自动化本地DNS映射配置指南
  • 螺旋输送机厂家哪家技术强?2025年终5家实力厂商对比评测与最终推荐! - 品牌推荐
  • TensorFlow中随机种子设置与结果可复现性保障
  • kkFileView在线文档预览完整教程:快速搭建企业级文件预览服务
  • 如何验证TensorFlow是否正确使用GPU?
  • 5个PyTorch模型解释性技术:从黑箱到透明AI的完整指南
  • Open-AutoGLM快速上手教程:仅需6步即可完成模型加载与推理验证
  • 错过Open-AutoGLM等于错过AI未来:仅限内部流传的6大落地案例
  • 2025终极评测:6大WebAssembly编译器性能完全对比
  • Open-AutoGLM入门必知的5大陷阱,90%的学习者第3步就放弃
  • 2025年度北京员工福利解决方案供应服务排名,看哪家口碑好? - 工业品网
  • TimelineJS时间线工具:零基础3分钟快速上手指南
  • TensorFlow训练日志分析:定位问题的第一步
  • IM软件有哪些适合大中型企业?国内主流平台深度评测 - 企业数字化观察家
  • 2025好乐居智能电动升降窗哪家好?安装服务好不好及详细介绍 - 工业品牌热点
  • 国知名的书画品牌京城信德斋的联系方式 - 品牌排行榜单
  • MiMo-Audio音频大模型完整指南:三步实现少样本跨任务泛化
  • Memos数据迁移实战:从备份到恢复的完整指南