Kubernetes Higress 安装与测试文档
本文档介绍如何在 Kubernetes 集群中使用 Helm 以HostNetwork + DaemonSet模式部署 Higress,并通过一个简单的 Nginx 应用验证路由是否生效。文档整体结构参考现有Nginx Ingress Controller安装文档,但安装方式切换为 Higress 官方 Helm Chart,适用于裸机和自建 Kubernetes 集群场景。
零、安装 Helm(如已安装可跳过)
在部署 Higress 之前,需要确保主控节点上已经安装了 Helm 工具。
# 下载安装脚本curl-fsSL-oget_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3# 赋予执行权限chmod700get_helm.sh# 执行安装./get_helm.sh# 验证安装是否成功helm version一、准备 Helm 仓库
1. 添加官方仓库并更新
# 添加 Higress 官方 Helm 仓库helm repoaddhigress.io https://higress.io/helm-charts# 更新本地仓库缓存helm repo update# 查看可用 chart 版本helm search repo higress.io/higress-l2. 说明
Higress 官方 Helm Chart 默认即可直接安装,不需要像ingress-nginx那样单独下载 Chart 包再解压处理。
另外,Higress 官方镜像使用独立镜像仓库,通常不受 Docker Hub 访问限制影响。
二、部署模式说明
Higress 安装完成后,数据面组件是higress-gateway,控制面组件是higress-controller。
本文档统一采用HostNetwork + DaemonSet模式部署,适用于不支持LoadBalancer的裸机集群,让 Higress 直接监听节点上的80/443端口。
如果你当前是三台物理机自建 Kubernetes 集群,这种方式通常比LoadBalancer模式更直接,也更符合实际使用场景。
三、安装 Higress
HostNetwork + DaemonSet 安装
建议使用以下方式部署:
cat>higress-values.yaml<<'EOF' global: ingressClass: higress higress-core: gateway: kind: DaemonSet hostNetwork: true EOFhelminstallhigress higress.io/higress\-nhigress-system\--create-namespace\-fhigress-values.yaml卸载命令
如果之前安装失败,可以先执行卸载:
helm uninstall higress-nhigress-system四、检查 Higress 运行状态
1. 查看 Pod 状态
kubectl get pods-nhigress-system正常情况下,应该至少看到以下组件处于Running状态:
higress-controllerhigress-gateway
2. 查看 Service
kubectl get svc-nhigress-system说明:即使采用HostNetwork + DaemonSet模式,集群中仍然会创建higress-gateway对应的 Service,用于集群内部发现;对外访问仍以节点 IP 的80/443端口为主。
3. 查看 IngressClass
kubectl get ingressclass正常情况下会看到higress这个IngressClass。
4. 查看 Higress 监听方式
由于本文档采用的是HostNetwork + DaemonSet模式,因此可以直接使用运行 Higress Gateway 的节点 IP,通过80/443端口访问。
例如:
kubectl get pods-nhigress-system-owide五、部署测试应用
部署一个简单的 Nginx 网页服务,并为其创建 Service 和 Ingress 路由规则。
1. 创建部署文件my-nginx.yaml
apiVersion:apps/v1kind:Deploymentmetadata:name:my-nginxspec:selector:matchLabels:run:my-nginxreplicas:2template:metadata:labels:run:my-nginxspec:containers:-name:my-nginximage:nginx:latestresources:limits:memory:"128Mi"cpu:"500m"ports:-containerPort:80---apiVersion:v1kind:Servicemetadata:name:nginx-servicespec:selector:run:my-nginxtype:ClusterIPports:-protocol:TCPport:8080targetPort:80---apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:example-ingressspec:ingressClassName:higressrules:-host:test.higress.comhttp:paths:-path:/pathType:Prefixbackend:service:name:nginx-serviceport:number:80802. 应用配置
kubectl apply-fmy-nginx.yaml3. 查看资源状态
kubectl get pod,svc,ingress六、验证访问
1. 检查 Ingress 是否被 Higress 接管
kubectl describe ingress example-ingress重点确认以下内容:
Ingress Class为higress- 规则中的 Host 为
test.higress.com - 后端 Service 为
nginx-service:8080
2. 通过节点 IP 测试访问
可以直接把域名解析到任意一台运行higress-gateway的节点 IP,然后发起请求:
curl-H"Host: test.higress.com"http://<运行Higress的Node_IP>或者先在本机/etc/hosts中添加:
<运行Higress的Node_IP>test.higress.com然后直接访问:
curlhttp://test.higress.com如果返回了标准的 Nginx 欢迎页面(Welcome to nginx!),则说明 Higress 已经成功接管 Ingress 并完成转发。
七、常用排查命令
1. 查看 Higress 相关资源
kubectl get all-nhigress-system2. 查看网关日志
kubectl logs-nhigress-system"$(kubectl get pods-nhigress-system|awk'/higress-gateway/ {print $1; exit}')"--tail=1003. 查看控制器日志
kubectl logs-nhigress-system"$(kubectl get pods-nhigress-system|awk'/higress-controller/ {print $1; exit}')"--tail=1004. 查看测试应用日志
kubectl logs-lrun=my-nginx--tail=1005. 重新安装或升级
helm upgrade higress higress.io/higress\-nhigress-system\--reuse-values八、补充说明
1. 关于 Ingress 兼容性
Higress 支持作为 Kubernetes Ingress 网关使用,并兼容大量常见的 Nginx Ingress 使用方式。因此,对于已经在使用Ingress资源的业务,通常只需要把:
ingressClassName改为higress
即可完成基础迁移验证。
2. 关于 Gateway API
Higress 除了支持传统Ingress,也支持Gateway API。
如果后续你希望从Ingress逐步演进到更强的网关模型,可以在安装完成后再启用Gateway API支持。
3. 关于 TLS 与证书
如果你已经在集群中部署了cert-manager,后续可以直接为 Higress 配置 HTTPS 证书,与Nginx Ingress的证书使用方式类似。