Day02 K3s NGF(Nginx Gateway Fabric)单 Worker 环境网关更新与故障处置 SOP

复制代码
# K3s NGF(Nginx Gateway Fabric)单Worker环境网关更新与故障处置SOP
> 环境信息
> - Master:192.168.3.***
> - Worker:192.168.3.***
> - 命名空间:ops-prod
> - 网关名称:private-gateway

## 一、常规操作:单Worker节点NGF网关配置更新标准流程
适用场景:集群仅1台Worker,调整NGF网关副本、重载网关配置、发布安全拦截策略
> 执行节点:Master 192.168.3.***

1. 固定kubeconfig,防止kubectl报8080连接拒绝
```bash
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes
  1. 修改 helm values 适配单 Worker 节点副本数

bash

复制代码
vi /root/k8s-config/k3s-private/gateway/helm-values-ngf.yaml
# 修改 nginx.pod.replicas: 2 → replicas: 1,保存退出
  1. 执行 NGF 网关重载脚本

bash

复制代码
bash /root/k8s-config/k3s-private/scripts/restart-ngf.sh
  1. 强制清理旧异常网关 Pod,触发重建

bash

复制代码
kubectl delete pod -n ops-prod -l gateway.networking.k8s.io/gateway-name=private-gateway --force --grace-period=0
  1. 持续监控 Pod 启动状态

bash

复制代码
kubectl get pods -n ops-prod -l gateway.networking.k8s.io/gateway-name=private-gateway -o wide -w

✅ 正常预期:Init 容器执行完成 → Pod 变为1/1 Running,再执行后续步骤 ❌ 异常识别:Pod 长时间卡在0/1 Init:0/1,禁止无限等待,执行下文故障流程

  1. 切换至 Worker 192.168.3.***,放行 NodePort 端口防火墙

bash

复制代码
firewall-cmd --add-port=30000-32767/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
  1. 网关功能安全校验
  • Master 新开终端持续运行端口转发:

bash

复制代码
kubectl port-forward -n ops-prod svc/private-gateway-nginx 30080
  • 原有终端执行安全策略校验脚本

bash

复制代码
HOST=jyjzhfw.qiantang.gov.cn bash /root/k8s-config/k3s-private/scripts/verify-actuator-security.sh

✅ 判定标准:脚本全部输出PASS,网关 actuator 安全拦截功能生效

二、故障处置:NGF 网关 Pod 持续卡在 0/1 Init:0/1

遇到问题

执行网关更新重建后,网关 Pod 状态长期显示 0/1 Init:0/1。 现象说明:初始化容器卡住,持续等待会出现容器反复重启、启动失败,不能单纯无限等待

说明:本集群 Init 容器为 SnippetsPolicy 策略注入容器(开启snippets.enable=true),作用:写入 actuator 403 拦截 Nginx 配置。

常见根因

  1. Init 容器镜像拉取失败
  2. RBAC 权限不足,无法写入网关 Nginx 配置
  3. Helm 更新后旧资源残留,资源未完全重建

标准化排查 & 解决步骤(Master 节点执行)

  1. 查看 Pod 事件与初始化容器信息

bash

复制代码
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl describe pod <pod名称> -n ops-prod

重点查看:

  • Init Containers 区块初始化容器名称、启动命令
  • 底部 Events 事件,捕获镜像拉取、权限、命令执行报错
  1. 优先查看 Init 容器日志(最直观定位报错)

bash

复制代码
kubectl logs <pod名称> -n ops-prod -c init
  1. 无明确日志输出时,执行完整重建修复

bash

复制代码
# 强制删除卡住异常Pod
kubectl delete pod <pod名称> -n ops-prod --force --grace-period=0
# 重新执行网关重载脚本
bash /root/k8s-config/k3s-private/scripts/restart-ngf.sh
# 再次监控Pod状态
kubectl get pods -n ops-prod -l gateway.networking.k8s.io/gateway-name=private-gateway -o wide -w

超时判定阈值

超过3 分钟 仍然停留在Init:0/1,必须介入排查,禁止持续等待。

三、常用命令速查(可直接复制复用)

bash

复制代码
# NGF网关重载脚本
bash /root/k8s-config/k3s-private/scripts/restart-ngf.sh

# 批量清理网关异常Pod
kubectl delete pod -n ops-prod -l gateway.networking.k8s.io/gateway-name=private-gateway --force --grace-period=0

# 查询Init容器日志模板
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl logs private-gateway-nginx-xxx -n ops-prod -c init
kubectl describe pod private-gateway-nginx-xxx -n ops-prod
相关推荐
jay神23 分钟前
2026年YOLO还有哪些创新点可以做?
python·yolo·毕业设计·科研·课程设计·创新
M78佐菲7 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
Brilliantwxx8 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
不怕犯错,就怕不做8 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
傲笑风9 小时前
【openvino】tinybert基于openvino服务化部署(四)
人工智能·python·自然语言处理·nlp·bert·openvino
weixin_416667969 小时前
【无标题】
运维·服务器·网络
维基框架9 小时前
WIKI 知识库 v1.1.1 正式发布
人工智能·python
一池秋_10 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
惜离殇10 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
上海云盾-小余11 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络