我就纳了闷了,为啥总是看见 n 个一个环境就是一个 K8S 集群

2023-03-30 09:17:20 +08:00
 sampeng
做运维到现在 5 年多了。去一个公司以看就一个环境一个 k8s 集群。再进去看看,一个业务 namespace+一个 kube-system 。
上一个东家。20 个集群。每个集群 20-30 个 pod ,线下物理机
现在这一家。我进来的时候 15 个集群。每个集群不到 10 个 pod 。而且是云上。最近被我干掉只剩 6 个了,一个产品一个环境一个。线上和 staging 的不是太好动,得找时间找机会做迁移。

应该不是我运气背,感觉是个普遍线上。难道学 k8s 得都是不知道亲和性和节点选择器的?这是偷懒还是就是懒得学?我说我一面是基本都是 yaml enginer 。也就会写个 deployment ,svc 之类的。再问细点就一问三不知了。比如 requests 和 limit 的区别,问 10 个 9 个答不出来。。

不是,k8s 的官方文档就在那放着啊。好歹看看最基础的字段是干嘛用的吧?
6029 次点击
所在节点    Kubernetes
54 条回复
saka0609
2023-03-30 09:21:10 +08:00
没看懂在说什么。。一个业务一个 namespace 我觉得很正常啊,和亲和性有什么关系。。
julyclyde
2023-03-30 09:25:14 +08:00
可能是为了隔离吧,dev/prod 如果混用同一个集群,万一互相访问了就糟糕了
ql562482472
2023-03-30 09:32:58 +08:00
确实感觉很多东西都是半懂不懂的人弄出来的 先弄出来用 用着用着就成了事实状态了 改也不好改
lff0305
2023-03-30 09:33:38 +08:00
1. 懒;
2. 不同的业务或者产品线用不同的账号来控制权限或者账单,自然就不能用一个集群
3. 某些客户有数据安全性的要求

感觉至少 80%是 1
james2013
2023-03-30 09:43:15 +08:00
开发环境或者测试环境你迁移也算了
线上环境你还准备找机会迁移,迁移成功了是分内的事情,没有什么好处,一旦线上环境出大问题,严重的话就直接把你开除了
gvdlmjwje
2023-03-30 09:48:12 +08:00
同意 LS ,你问过你领导么 说迁就迁。。。这不好吧
cstj0505
2023-03-30 09:48:32 +08:00
@james2013 工作量啊,那你我把原来混乱的局面改变了,是不是得升职加薪了了,哈哈
统一化是一门大学问
ElmerZhang
2023-03-30 09:51:06 +08:00
不懂就问,这样搞好多集群的缺点是什么?
geekyouth
2023-03-30 09:51:35 +08:00
我觉得你的表达能力有待提升🙄
wqzjk393
2023-03-30 09:55:37 +08:00
感觉很多时候都是老板要求强上的…
swulling
2023-03-30 09:56:56 +08:00
Kubernetes 的多租户本身就有两种方案:多命名空间和多集群。

其中因为 K8s 自身在多租户和权限控制方面做的其实不是很好,普通公司没有办法自己搞一套管理面,所以不如多集群方便。

而多集群方案又分为:

- 共享控制面方案:apiserver/scheduler/controller-manager 统一部署,每个集群只有 node 是单独部署的,node 可以直接购买 VM 。好处是节约控制节点资源,计算节点资源隔离

- VirtualNode 方案:为了解决 node 独占带来的资源浪费,使用共享控制面 + VirtualNode 。这种方案也是我认为在云上最好的方案。同时也可以结合独占 Node ,特别灵活。

- ClusterInCluster:搞一个母集群,然后虚拟出多个子集群(每个 namespace 虚拟出一个子集群),好处是子集群之间可以共享节点,提高资源利用率。


如果一年前,我支持多 namespace 方案,但是现在,我支持多集群方案。
swulling
2023-03-30 09:58:31 +08:00
另外补充下,K8s 的部分资源其实是全局的,多 namespace 方案很麻烦。
rrfeng
2023-03-30 10:00:57 +08:00
想要物理隔离呗,故障区域减小。

话说 node 要是可以绑定 namespace 就好了。
coderxy
2023-03-30 10:12:05 +08:00
@rrfeng node 不能绑定 ns ,但是 node 可以设置亲和性,然后给某个 ns 的 pod 都设置某个亲和性标签,就能实现这个 ns 的 pod 都在某几个 Node 上了
rrfeng
2023-03-30 10:23:29 +08:00
@coderxy 我们就是这么干的,但是如果 ns 能够自动完成这个事情不是更好么。
lqy2575395
2023-03-30 10:29:28 +08:00
隔离啊,至少测试 /线上肯定要分开啊,光节点隔离又不完全,测试环境给你整点活,把集群负载搞卡了也不是不可能发生,版本升级也能拿小集群先升级看看。
coolcoffee
2023-03-30 10:30:15 +08:00
如果不根据环境拆集群,测试环境想要升级 K8S 版本难道要把生产环境的节点组也一同升级? 万一因为验证测试新特性,然后出现 CoreDNS 或者 CNI Network 故障,也是一并把生产环境带崩?
coderxy
2023-03-30 10:35:54 +08:00
@rrfeng 你可以给 k8s 提 PR 哈哈。 不过一般来说有亲和性已经够了,而且亲和性更灵活。
dolphintwo
2023-03-30 10:36:08 +08:00
你就说能不能用吧
fengye0509
2023-03-30 10:57:16 +08:00
requests 和 limit 有什么好说的,资源请求与限制,多环境多集群不是很正常吗? ns 区分项目
节点亲和性可以用大节点跑重服务,反亲和性可以用来限制多个 pod 跑在同一节点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/928362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX