Kubernetes集群最佳实践

时间:2016-05-12 21:32:12

标签: networking kubernetes

我正在与Kubernetes合作开发一个新项目,我需要三个环境:DEV,QA和PROD。

最推荐的是,创建多个群集或创建一个按命名空间分隔环境的大群集。

4 个答案:

答案 0 :(得分:3)

您是否只想拥有一个prod群集或多个prod群集?需要考虑的一件事是更新集群管理软件(到新的k8s版本)会影响您的应用程序。如果您只打算使用单个prod群集,我建议您单独运行qa和dev,以便首先升级这些群集以解决任何问题。如果您要拥有多个prod集群,那么您可以一次升级一个以确保应用程序可用性并在环境之间共享集群更有意义。

答案 1 :(得分:2)

命名空间不会带给你隔离,目前它只是dns中的一个不同的子域。每个应用程序最好有命名空间。 我强烈建议你有两个用于prod的集群(如果更新k8s)和一个用于dev / qa的集群。

答案 2 :(得分:2)

看看这篇博客文章:Checklist: pros and cons of using multiple Kubernetes clusters, and how to distribute workloads between them

我想强调一些优点/缺点:

  

有多个集群的原因

     
      
  • 生产/开发/测试分离:尤其是用于测试Kubernetes,服务网格和其他集群软件的新版本
  •   
  • 符合性:根据某些法规,某些应用程序必须在单独的群集/单独的VPN中运行
  •   
  • 更好地隔离安全性
  •   
  • 云/本地:在本地服务之间分配负载
  •   
     

有一个集群的原因

     
      
  • 减少设置,维护和管理开销
  •   
  • 提高利用率
  •   
  • 降低成本
  •   

考虑到不太昂贵的环境,具有平均维护水平,但仍确保生产应用程序的安全隔离,我建议:

  • 1个用于DEV / QA的群集(由名称空间分隔,甚至可以使用网络策略隔离,例如Calico
  • 1个PROD群集

答案 3 :(得分:1)

肯定同意你想要多个集群: 对升级过程中可能失败的k8s或者因为你搞砸了某个地方会对整个集群产生影响的任何事情都会对整个集群产生影响。

例如,我遇到了DNS问题,这在我的集群中造成了破坏;所有名称空间都受到影响。

升级通常不是什么大问题,但有一天你可能遇到障碍;如果kubelet失败太久你的吊舱会被杀死。

因此,最好升级您的测试/开发环境并在生产升级之前解决问题。