K8s Ingress Questions
K8s Ingress Questions
如果在 公众号 文章发现状态为 已更新, 建议点击 查看原文 查看最新内容。
状态: 未更新
原文链接: https://typonotes.com/posts/2023/03/28/k8s-ingress-questions/
1. 常说的 Ingress 值的是什么。
首先拉平一个认识。
常说的 Ingress 是 Ingress Rules。
但 Ingerss 实际上是由 Ingress Rules 和 Ingress Controller 的组合而成的。 在使用上, K8S 通过 Rules 的管理, 隐藏 Controller。
目前 k8s 官方维护的 控制器(Controller) 有 AWS, GCS, Nginx
, 其他三方的大大小小几十种, 可以参考
https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress-controllers/
而 Rules 是 K8S 对于控制器的配置的公共抽象, 帮助用户 一定程度上 屏蔽了不同控制器的差异。
所谓 一定程度, 指的是
- 在 (1) 通过 annotations 的值管理 控制器 的特殊。 不同的控制器支持的字段和功能不一致。
- 在 (2) spec 内是 通用配置。 内容格式 所有控制器都必须遵守。
以下是群友提问了
2.1. 我这边没买LB,公司的二级域名解析到的WORKER 节点(2个) DNS全部解析过来了(轮询) 然后我想是否可以不买LB场景下实现 域名转发service ssl
可以
- 可以将 控制器 的 Service 设置 NodePort。 使用这种方法, 对外端口无法使用标准的
80/443
。 - 可以在 控制器 的 Deployment/DaemonSet 中, 设置 HostPort。 这种方式对外可以使用
80/443
。
但是不建议。
- 其一、 如果要提供公网访问服务的话, 必然会 将 Node 节点绑定公网 IP 暴露到互联网。
- 其二、 通过 DNS 可以在解析层面轮训, 实现 负载均衡。 但是 DNS 本身没办法做健康检查, 如果某个 Node 节点挂了, 服务就无法被访问。
例如上图, 当 1-2 两个节点失效时, DNS 依旧会将请求解析过来, 造成失败。
2.2. 我这块域名 dns 解析到的是2台worker,是否要用 daemonset 部署 Ingress 控制器?
可以, 但没必要。 使用 DNS 或者 LB 作为负载均衡的前提条件, 重要的都是 关系映射。 即当节点发生变化的时候, 如何 保证只有健康的控制器节点对外提供业务?
一般情况下保持 2-3个 worker 副本几本够用了。 可根据实际情况调整。
- 原文链接:https://typonotes.com/posts/2023/03/28/k8s-ingress-questions/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。