在各种云上运行k8s需要避免一些故障,虽然各个云商都提供了一键开设使用各种CK,但是作为用户还是有很多需要避免的问题。云服务商是不能让你绕过的坑。
比如我们遇见的一些常见问题:
1.存储内资源不能垮Zone
当你创建有外部磁盘类型的pv和pvc场景时候,就需要特别的注意。你创建的存储类SSD或者ESSD会落地到某个AZ内,比如某地的A1区。当你的计算节点在某地的A1区时,你不会感知有问题存在。当你的计算节点在某个时刻存在某地的A2区的时候,恰好服务也调度过去的时候,将会从A2区访问A1区磁盘类型的PV,此时服务会调用失败。
2.AZ计算节点类型
当创建云上的计算节点池,池里面设定了某些类型的服务器实例后,如果本区域资源不足,其他区域资源充足,但是价格可能存在极大差异。这个点会导致费用刺客,另外一个坑是 云商服务器类型节点一般和pod数量、ip数量在实例上运行分配最大数有关系。这样会导致有些服务的反亲和性调度策略生效,会导致计算服务节点严重倾斜到某个az区域。导致调度失败。
3.AZ计算节点类型与磁盘
跨区的磁盘pv是存储第一点的坑,计算节点与ESSD和SSD挂载,在云商那也有要求。比如某种实例类型只能挂载SSD类型的块设备,某种类型的实例又只能挂ESSD类型的。这也是另外一个需要注意的点。
GPT提示并生成以下内容
在部署业务到 Kubernetes 中时,需要避免一些常见的坑,包括但不限于以下几点:
1.没有正确的资源限制和请求:在容器中设置内存和CPU的请求和限制非常重要。
如果没有正确地设置资源请求和限制,可能会导致节点资源分配不合理,甚至影响其他应用的正常运行。
2.不合理的镜像管理:部署时要注意使用合适的镜像,避免不安全或不合适的镜像。
此外,还需定期更新和维护镜像,确保使用的是最新版本并且没有已知的安全漏洞。
3.忽视持久化存储:应用程序通常需要持久化存储来保存数据。
在 Kubernetes 中,需要正确配置并使用持久卷,并确保数据持久化的安全。
4.不合理的网络策略:网络策略定义了 Pod 之间的流量规则。
在部署业务时,需要谨慎定义网络策略,避免不正确的网络流量导致服务不可用甚至安全隐患。
5.略安全性:Kubernetes 中的安全性问题包括访问控制、敏感数据的泄漏,以及容器本身的安全性等。
在部署业务时,必须确保所有这些方面都得到妥善处理。
6.不合理的监控和日志记录:监控和日志记录是业务部署中的关键环节,如果忽略监控和日志记录,可能会错过重要的运行时信息和故障排查所需的数据。
7.缺乏自动化运维:Kubernetes 的强大之处在于其自动化特性。如果在部署时忽略了自动化的各个方面,可能会导致部署后的运维工作变得非常复杂和困难。
避免上述坑,需要充分了解 Kubernetes 的特性和最佳实践,并严格按照最佳实践来部署业务。同时,深入了解正在部署的应用程序的特殊需求也是至关重要的。