本文永久链接: https://www.xtplayer.cn/kubernetes/k8s-infrastructure/
Kubernetes 是当前最为流行的开源容器编排平台,成为众多企业构建基础架构的首选 。在本文中,我们将探讨针对你的用例构建基础设施的最佳方式,以及你可能要根据各种限制条件做出的各种决定 。
架构设计你的架构应该在很大程度上围绕你的用例来设计,因此在设计过程中你需要非常仔细以确保该基础架构能够支撑你的用例,在必要的时候也可以寻求外部专业团队的帮助 。在架构设计的开始保证方向正确十分重要,但是这并不意味着不会发生错误,而且随着每天都有新的技术或研究横空出世,你可以看到变革已经成为常态,并且你的架构设计思维有可能过时 。
这就是为什么我强烈建议你采用 Architect for Chang 的原则,让你的架构成为一个模块化的架构以便在未来有需要的时候你可以灵活地在内部进行改变 。
让我们看看再考虑 client-server 模型的情况下如何实现系统架构的目标 。
切入点:DNS在任何典型的基础架构中(无论是否是云原生架构),一个消息请求必须先由 DNS 服务器解析,并返回服务器的 IP 地址 。设置你的 DNS 应该基于你所需要的可用性 。如果你需要更高的可用性,你可能想要将你的服务器分布到多个区域或者云提供程序上,具体的实现要基于你想要达到的可用性等级 。
内容分发网络(CDN)在某些情况下,你可能需要尽可能地以最小的延迟为用户提供服务,同时减少服务器的负载 。这就是内容分发网络(CDN)发挥重要作用的地方 。
Client 是否经常从服务器上请求一组静态资产?你是否希望提高向用户交付内容的速度,同时减少服务器的负载?在这种情况下,采用边缘的 CDN 为一组静态资产提供服务,实际上可能有助于降低用户的延迟和服务器的负载 。
你所有的内容都是动态的吗?你是否可以在一定程度上为用户提供延迟的内容,以减少复杂性?或者你的应用程序接收很低的流量吗?在这种情况下,使用 CDN 可能没有太大的意义,你可以将所有的流量直接发送到全局负载均衡器 。但要注意的是,拥有 CDN 也确实有分配流量的优势,这在你的服务器受到 DDoS 攻击时是很有帮助的 。
CDN 提供程序包括 Cloudfare CDN、Fastly、Akamai CDN、Stackpath,此外你的云提供商也有可能会提供 CDN 服务,比如谷歌云平台的 Cloud CDN、AWS 的 CloudFront、微软 Azure 的 Azure CDN 等 。
文章插图
【一通百通,一文实现灵活的 K8S 基础架构】
Load Balancer如果有一个请求不能被你的 CDN 服务,这个请求下一步会传送到你的负载均衡器上 。而这些可以是区域性的 IP,也可以是全局性的 Anycast IP 。在某些情况下,你也可以使用负载均衡器来管理内部流量 。
除了路由和代理流量到合适的后端服务,负载均衡还能够承担 SSL 终止、与 CDN 集成,甚至管理网络流量的某些方面等职责 。
虽然存在硬件负载均衡器,但软件负载均衡器提供了强大的灵活性、减少了成本开支以及弹性伸缩性 。
与 CDN 类似,你的云提供程序应该也能够为你提供一个负载均衡器(如 GCP 的 GLB、AWS 的 ELB、Azure 的 ALB 等),但更有趣的是你可以直接从 Kubernetes 中调配这些负载均衡器 。例如,在 GKE 中创建一个 Ingress 也会在后端为你创建一个 GLB 来接收流量,其他功能如 CDN、SSL 重定向等也可以通过配置你的 ingress 来设置,访问以下链接查看详情:
https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features
虽然一开始总是从小开始,但是负载均衡器可以让你逐步扩展至具有以下规模的架构:
文章插图
网络及安全架构下一件需要关注的事情是网络 。如果你想要提高安全性,你可能需要一个私有集群 。在那里,你可以调节入站和出站流量,在 NATs 后面屏蔽 IP 地址,在多个 VPC 上隔离多个子网的网络等 。
如何设置网络通常取决于你所追求的灵活性程度以及如何实现它 。设置正确的网络就是要尽可能地减少攻击面,同时还能保持正常的运转 。
通过设置正确的网络来保护你的基础设施通常还涉及到使用正确规则和限制条件设置的防火墙,以便限制来自各后端服务的流量的进出,包括入站和出站 。
在很多情况下,可以通过设置堡垒主机并通过隧道进行集群中的所有操作来保护这些私有集群,因为你需要向公共网络公开的就是堡垒(又称 Jump host),通常是在与集群相同的网络中设置 。
推荐阅读
- 高德地图AR驾车导航新升级 实现全面机型覆盖
- Python网络编程实现自动化,简化Telnet网络配置工作
- 一文带你了解搜索功能设计
- 翡翠|一文读懂翡翠的种
- IP代理技术是如何实现IP地址的切换与隐藏?
- Python实现钉钉/企业微信自动打卡
- 还不知道ReentrantLock的实现流程,那你就out了
- 一文看懂 HashMap 中的红黑树实现原理
- nginx加vpn实现访问内网的云服务器
- Go语言实现海量日志收集系统