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

ubantu24,k8s v1.33.6,离线部署ingress v1.13.6

已有k8s v1.33.6集群,在无网环境离线安装ingress。

 

一,安装nertctl(所有k8s节点安装)

wget https://github.com/containerd/nerdctl/releases/download/v2.3.4/nerdctl-2.3.4-linux-amd64.tar.gz
tar -zxvf nerdctl-2.3.4-linux-amd64.tar.gz
mv nerdctl /usr/local/bin/
chmod +x /usr/local/bin/nerdctl
nerdctl version

 

二,联网机器准备离线资源(有网环境执行)

1,下载官方 YAML(k8s v1.33.6的最佳使用ingress v1.13.6)

wget -O ingress-1.13.6.yaml https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.6/deploy/static/provider/baremetal/deploy.yaml 

 

2,获取全部依赖镜像、导出离线 tar 包

打开ingress-1.13.6.yaml,搜索【registry.k8s.io】内容,检查看看ingress-nginx-controller与kube-webhook-cert.gen用的什么版本,根据对应的版本下载镜像。

image

 

image

  

3,拉取镜像

可以使用sealos 或 nerdctl拉取镜像:

两种方式:

1)拉取原生镜像

sealos pull registry.k8s.io/ingress-nginx/controller:v1.13.6
sealos pull registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.6

 

2)使用m.daocloud.io代理拉取镜像,然后改tag名字

sealos pull m.daocloud.io/registry.k8s.io/ingress-nginx/controller:v1.13.6
sealos pull m.daocloud.io/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.6

修改tag

sealos tag m.daocloud.io/registry.k8s.io/ingress-nginx/controller:v1.13.6  registry.k8s.io/ingress-nginx/controller:v1.13.6
sealos tag m.daocloud.io/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.6  registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.6

 

 

4,批量打包镜像

-m:批是打包镜像,加这个参数必须加 --format docker-archive

sealos save -m --format docker-archive -o ingress-images-v1.13.6.tar \
registry.k8s.io/ingress-nginx/controller:v1.13.6 \
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.6

 

5,将导出的tar文件拷贝到k8s集群的所有节点(master + worker)

将以下文件传到所有 K8s 节点(master+worker)同一目录:

ingress-images-v1.13.6.tar 

scp ./ingress-images-v1.13.6.tar  root@k8s-worker-01:/data/offline-install-ingress
scp ./ingress-images-v1.13.6.tar  root@k8s-worker-02:/data/offline-install-ingress

 

6,从离线文件导入ingress镜像到containerd容器(k8s所有节点执行)

导入到k8s.io命名空间:

nerdctl --address=/run/containerd/containerd.sock --namespace k8s.io load -i /data/offline-install-ingress/ingress-images-v1.13.6.tar
# 重载镜像库索引 
nerdctl --address=/run/containerd/containerd.sock --namespace k8s.io images prune --reset-index

 

7,检查所有节点的镜像是否导入成功

nerdctl --address=/run/containerd/containerd.sock --namespace k8s.io images | grep ingress-nginx

 

image

 如果没有两行说明镜像导入失败。

 

三,卸载老版本ingress

如果已要存有老版本ingress,先卸载老板版 

# 强制清空finalizer,彻底删除ingress-nginx命名空间
kubectl get ns ingress-nginx -o json | jq '.spec.finalizers=[]' | kubectl replace -f -
kubectl delete ns ingress-nginx --force --grace-period=0
# 清理准入webhook残留
kubectl delete validatingwebhookconfiguration ingress-nginx-admission 2>/dev/null
kubectl delete mutatingwebhookconfiguration ingress-nginx-admission 2>/dev/null
# 清理CRD残留
kubectl get crd | grep ingress-nginx | awk '{print $1}' | xargs kubectl delete crd 2>/dev/null
# 清理IngressClass
kubectl delete ingressclass nginx 2>/dev/null

 

四,通过yaml离线部署Ingress

1,移除镜像 sha256 摘要(离线必改,否则校验失败)

sed -i 's/@sha256:[0-9a-f]*//g' ingress-1.13.6.yaml

 

2,全局设置镜像拉取策略为 Never(强制使用本地镜像,不联网拉取)

# 在所有container下添加 imagePullPolicy: Never
sed -i '/image: registry.k8s.io/a \        imagePullPolicy: Never' ingress-1.13.6.yaml

 

3,修改 Service 为固定 NodePort,80=30080, 443=30443

(个人习惯NodePort 的http使用30080,https使用 30443)

sed -i 's/type: LoadBalancer/type: NodePort\n  ports:\n  - name: http\n    port: 80\n    targetPort: http\n    nodePort: 30080\n  - name: https\n    port: 443\n    targetPort: https\n    nodePort: 30443/' ingress-1.13.6.yaml

 

4,部署

kubectl apply -f ingress-1.13.6.yaml

 

5,先删除校验勾子,不删除创建不了ingress

kubectl delete ValidatingWebhookConfiguration ingress-nginx-admission --ignore-not-found

 

如果不删除校验勾子,部署ingress规则会报如下错误:

Error from server (InternalError): error when creating "dotnet-demo-v1-ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=10s": no endpoints available for service "ingress-nginx-controller-admission"

 

6,验证安装

# 查看命名空间Pod
kubectl get pods -n ingress-nginx 
# 查看service端口
kubectl get svc -n ingress-nginx
# 第二种查看service端口
kubectl get svc ingress-nginx-controller -n ingress-nginx
# 查看ingress控制器就绪状态
kubectl get ingressclasses

 

 

五,【修改ingress控制器对外端口】

1,先切换编辑器避免报错

kubectl edit svc ingress-nginx-controller -n ingress-nginx

 

2,找到 spec.ports 区域,示例默认配置:

spec:clusterIP: 10.96.3.243clusterIPs:- 10.96.3.243externalTrafficPolicy: ClusterinternalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- appProtocol: httpname: httpnodePort: 30080    #修改为你要对外的端口port: 80                 #service内部端口protocol: TCPtargetPort: http- appProtocol: httpsname: httpsnodePort: 30443      #修改为你要对外的端口port: 443                 #service内部端口

 

现在ingress对外暴露的端口是 30080 和 30443。

如果要修改Ingress使用80端口访问,参照 https://www.cnblogs.com/yyee/p/21913914 修改。

 

http://www.jsqmd.com/news/1269707/

相关文章:

  • MVVMLin性能优化指南:提升App响应速度的7个技巧
  • UniversalAdbDriver:Windows平台Android开发环境标准化解决方案
  • Langflow 系列 | 第 12 篇:服务层设计:从接口到业务能力
  • 2026 年至今,麻栗坡正规的真空袋订制厂家哪家强,揭秘!这个小工具如何帮你省下1000块? - 领域鉴赏官
  • 系统抗脆弱设计:从容错机制到技术债务管理的工程实践
  • 如何用DiligentCore轻松实现跨平台GPU渲染?完整入门教程
  • Rust Web框架性能大比拼:基于Are We Web Yet数据的权威分析
  • 2026年AI降重工具横评:哪款改完还能保持「人味」?
  • YOLOv10在钢铁腐蚀检测中的工业应用与优化
  • AI工具如何高效解决论文格式难题
  • Demo 能跑通只是热身,权限与日志才是 AI 测试的生死线
  • 英语阅读_The Yuanyang Hani Terraces
  • 同样一块欧米茄,上海不同回收店报价差距大,看完再出手不亏 - 讯息早知道
  • HarmonyOS开发实战:笔友-微交互细节——按钮按压、卡片悬浮、Toast 渐隐
  • 2026 年新消息:临邑评价高的挖掘机租赁公司效率高制造商哪个好,揭秘:如何用租赁机,让施工效率飙升三倍?-汇海工程机械 - 鉴选官
  • 基于YOLO26的无人机检测系统:高精度与低延迟实践
  • Python毕业设计-基于 Django 的车辆故障报修与管理系统设计与实现 机动车故障信息登记与运维管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 如何5分钟免费搞定Axure RP全版本中文界面终极配置教程
  • 多模态大模型构建智能说明书系统实践
  • Multichain Auditor安全清单:如何避免跨链协议中的签名重放攻击
  • Kimi K3大模型技术解析:200万字长文本处理与API集成实践
  • 别再熬夜写论文了!7款AI神器实测,真实参考文献+低查重率,原创度飙升 - 麟书学长
  • netjj项目30天重构实战:技术债务量化与架构升级经验
  • CentOS 7安装MySQL 8.0时解决libtirpc依赖错误
  • 百度网盘Mac版SVIP破解完整指南:三步实现免费高速下载的终极方案
  • CentOS系统OpenSSH一键升级脚本设计与实现
  • 开源AI资源:100美元训练类ChatGPT模型全攻略
  • 嵌入式高可靠系统设计:窗口看门狗与时钟监控模块实战解析
  • Dism++:Windows系统优化与维护的终极免费开源工具指南
  • OpenClaw开源智能体部署与多平台接入实战指南