Kubernetes部署Keycloak后浏览器访问出现Connection Refused问题求助
Keycloak Kubernetes部署连接拒绝问题排查与解决
以下是针对你遇到的Connection Refused错误的排查方向和解决方案:
1. 确认Ingress Controller已部署且正常运行
Ingress资源需要依赖Ingress Controller(如NGINX Ingress)才能生效,若集群未部署Controller,请求无法转发到Keycloak服务:
- 检查Ingress Controller Pod状态:
kubectl get pods -n ingress-nginx - 若没有Pod输出,先安装NGINX Ingress Controller:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml - 等待所有Pod进入
Running状态后重试访问。
2. 检查Keycloak Pod与Service的状态
Ingress指向的Service若未绑定正常运行的Pod,请求会无响应:
- 查看Keycloak Pod状态:
若Pod状态异常(如CrashLoopBackOff),通过日志排查启动问题:kubectl get pods -l app=keycloakkubectl logs <你的keycloak-pod名称> - 验证Service关联的Endpoint是否有效:
若Endpoint列表为空,说明Deployment和Service的标签选择器不匹配,检查两者的kubectl get endpoints keycloakselector字段是否一致。
3. 修复TLS证书配置
你的Ingress启用了TLS,但缺少对应证书Secret会导致Ingress Controller无法处理HTTPS请求:
- 检查集群中是否存在对应域名的TLS Secret:
kubectl get secret - 若没有,创建自签名测试证书:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=keycloak.192.168.49.2.nip.io" kubectl create secret tls keycloak-tls --key tls.key --cert tls.crt - 修改Ingress配置,添加
secretName字段:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: keycloak spec: tls: - hosts: - keycloak.192.168.49.2.nip.io secretName: keycloak-tls # 新增该行 rules: - host: keycloak.192.168.49.2.nip.io http: paths: - path: / pathType: Prefix backend: service: name: keycloak port: number: 8080 - 更新Ingress:
kubectl apply -f keycloak-ingress.yaml
4. 排查网络策略或防火墙限制
- 检查是否有NetworkPolicy阻止Ingress Controller到Keycloak的流量:
若存在限制策略,需添加规则允许kubectl get networkpolicyingress-nginx命名空间访问Keycloak的8080端口。 - 检查节点防火墙,确保80/443端口对外开放;若使用NodePort方式暴露Ingress,确认对应NodePort未被拦截。
5. 验证Ingress资源是否被正确识别
- 查看Ingress的详细状态和事件:
检查Events字段,确认Ingress Controller成功加载配置,无报错信息。kubectl describe ingress keycloak
内容的提问来源于stack exchange,提问作者Gayan Kodithuwakku
相关产品推荐
相关产品推荐

