如何在Jelastic Cloud的K8s集群配置自定义域名与双栈公网IP?
解决Infomaniak Jelastic K8s集群公网双栈IP及Ingress外部IP Pending问题
先搞定Ingress外部IP Pending的核心问题
- 确认Jelastic集群已启用LoadBalancer控制器:不少Jelastic K8s集群默认未开启该组件,需进入平台控制台的集群设置,找到负载均衡相关选项,确保对应控制器(如平台Cloud Provider专属LB控制器)处于启用状态。
- 检查公网IP资源分配情况:在Jelastic集群管理界面的「IP地址」模块,确认已为公网IPv4和IPv6地址完成集群绑定。未分配的话先手动完成分配,再进行Ingress配置。
- 核对Ingress的annotations配置:Jelastic环境需添加特定注解绑定公网IP,示例如下:
若上述注解无效,可尝试annotations: kubernetes.io/ingress.class: "nginx" # 确保使用集群内的Nginx Ingress Controller loadbalancer.jelastic.io/ip: "xxx.xxx.xxx.xxxx,xxxx:xxxx:xxxx:xxxx::x" # 替换为你的双栈公网IPservice.beta.kubernetes.io/jelastic-loadbalancer-ip这类平台专属注解,不同Jelastic版本可能存在差异。
双栈IP配置实操步骤
- 确认集群支持双栈:在Jelastic控制台查看集群详情,确保Kubernetes版本≥1.21(双栈最低版本要求),且集群网络配置已启用IPv6——部分集群默认仅开启IPv4,需在创建时选择双栈模式或后期修改网络设置开启。
- 配置Ingress Controller双栈监听:若使用Nginx Ingress Controller,需在其Deployment中添加
--enable-ipv6启动参数,同时确保集群的Pod CIDR和Service CIDR均包含IPv4和IPv6网段。 - 给Ingress对应的Service绑定双栈IP:若通过LoadBalancer类型的Service暴露Ingress Controller,直接在Service的annotations中指定双栈IP:
apiVersion: v1 kind: Service metadata: annotations: loadbalancer.jelastic.io/ip: "你的公网IPv4地址,你的公网IPv6地址" name: nginx-ingress-controller spec: type: LoadBalancer ipFamilies: - IPv4 - IPv6 ipFamilyPolicy: PreferDualStack selector: app: nginx-ingress ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443
额外排查方向
- 检查Cloud Provider组件状态:Jelastic K8s集群依赖内部的
jelastic-cloud-controller-manager组件,执行kubectl get pods -n kube-system查看该Pod是否处于Running状态。若异常,尝试重启或重新部署该组件。 - 查看Ingress Controller日志:执行
kubectl logs -n <Ingress所在命名空间> <Ingress Controller Pod名称>拉取日志,排查是否存在IP绑定失败的报错(如IP资源不足、权限问题等)。 - 联系平台技术支持:若上述步骤均无效,直接向Infomaniak Jelastic提交工单,附上集群ID、Ingress及Service的配置yaml,平台侧可快速定位内部问题(如IP资源未同步至K8s集群等)。
内容的提问来源于stack exchange,提问作者Unik6065
相关产品推荐
相关产品推荐

