期望应用安装完,在本地能直接使用 https+域名访问应用,
以上 1 、2 、3 都没问题,第 4 步 external-dns 提示错误日志
Failed to create CNAME record named 'echo.mylabs.work' to 'localhost' with ttl 0 for Alibaba Cloud DNS: SDK.ServerError
ErrorCode: SubDomainInvalid.Value
Message: The DNS record is invalid or in the wrong format.
问题出在 ingress ip 分配的是 localhost
❯ kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
ingress-nginx-controller LoadBalancer 10.101.27.87 localhost 80:30375/TCP,443:31539/TCP
...
ingress service yaml
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.9.4
name: ingress-nginx-controller
namespace: ingress-nginx
spec:
externalTrafficPolicy: Local
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- appProtocol: http
name: http
port: 80
protocol: TCP
targetPort: http
- appProtocol: https
name: https
port: 443
protocol: TCP
targetPort: https
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
type: LoadBalancer
部署完分配了一个 localhost, 本地也监听了对应端口
...`ingress service`
status:
loadBalancer:
ingress:
- hostname: localhost
尝试过给 service 配置了loadBalancerIP
或者externalIPs
没有产生效果
1
token10086 2023-12-12 23:04:40 +08:00
我也在学习阶段,说的不一定对。是这段时间学习的积累
1. 在 k8s 中 LoadBalancer service 要云服务商支持,或者自己装一个 Klipper LoadBalancer 在 k3s 里面是自带的 https://docs.k3s.io/zh/networking 2. Ingress controller 实际上也是一个 pod ,hostNetwork: true 或许能满足需求 因为都是遵循了统一开发标准这个配置也可以了解下,它能做的 NGINX Ingress 也能对应找稳定就行了 https://github.com/traefik/traefik-helm-chart/blob/master/traefik/VALUES.md |
2
jiangzm OP @token10086 谢谢。好像没找到 klipper 在 k8s 的安装方法,官方没提供对应的 yaml 或者 helm 。Ingress controller 暴露端口其实没问题,在宿主机能访问到用 localhost 及 host ip 都行。另外就是 external-dns 支持 service 或者 ingress ,因为这两者都可以有 hostname 和 ip ,pod 应该没有 host 或者 externalName 配置。
|