荚名字为什么必须通过kubernetes部署创建时附加到他们的名字5个随机字母数字字符?

问题描述 投票:0回答:3

荚名字为什么必须通过kubernetes部署创建时附加到他们的名字5个随机字母数字字符?是否有可能摆脱他们,使豆荚名不会改变?我经常删除和创建部署和宁愿荚名不会改变。

更新:我想有相同的名字,因为我不断地删除/重新创建相同的部署,如果名称不改变,那么我可以很快重新使用旧命令给exec进/看到容器的日志。

kubernetes
3个回答
3
投票

这是部署如何工作的,每次死亡荚,ReplicaSet创建具有不同名称吊舱,以匹配期望的状态并连接到窗格名称给他们唯一的名称随机数。

无论你正在努力实现的,因为它们是用于无状态应用程序是不可能的部署对象。当你想申请的保存状态(名称),这当然是可能的StatefulSet。

所以,如果你使用StatefulSet对象来管理副本,每个吊舱将有一定的命名规则,e中创建。 G。 POD_NAME-1,POD_NAME-2等我。即指数将appeneded到窗格名称。此外,当荚死了,新的吊舱将具有相同名称的创建。

你想达到敖StatefulSet的理想的用例。去吧。


2
投票

原因有荚果名称随机的字母数字:

当我们创建一个deployment,它不会直接创建荚(相匹配的副本数)。

  • 它会创建一个replicaset(具有名称= deployname_name + 10位aplhanumeric)。但是,为什么多余的字母?当我们升级的部署,新replicaset是新的字母数字创造老保持原样。这个老replicaset用于回滚。
  • 所创建的replicaset将创建的豆荚(具有名称= replicaset_name + 5位的字母数字)。但是,为什么多余的字母?我们不能有两个吊舱具有相同的名称。

如果你的用例是经常使用的旧命令,然后去为Statefulset不是很好的解决方案。 Statefulsets是heavy weight(有序部署,下令终止,唯一的网络名称),他们是专门设计以保持跨越重启(与持续性的体积组合)的状态。

有一些工具,您可以使用:

  1. stern
  2. kube-fzf

轻量级解决问题的方法:

  1. 您可以使用labels需要传达部署相同群: kubectl get pods -l app=my_app,app_type=server NAME READY STATUS RESTARTS AGE my-app-5b7644f7f6-4hb8s 1/1 Running 0 22h my-app-5b7644f7f6-72ssz 1/1 Running 0 22h

在此之后,我们可以使用一些魔法的bash得到什么,我们要象下面

最后的命令:

kubectl get pods -l app=my_app,app_type=server -o name | rg "pod/" -r "" | head -n 1 | awk '{print "kubectl logs " $0}' | bash

说明:

  1. 得到荚名单 kubectl get pods -l app=my_app,app_type=server -o namenames pod/my-app-5b7644f7f6-4hb8s pod/my-app-5b7644f7f6-72ssz
  2. 替换荚/使用ripgrepsed(RG “荚/” -R “”)
  3. 只需要一个使用head -n 1
  4. 用awk打印EXEC / see_log命令
  5. 管它打坏执行

1
投票

如果部署从部署目标吊舱,类型:部署,然后部署控制器附加一个唯一的名称荚是具体部署的一部分。这是部署控制器如何查找各自部署的所有相关豆荚。这是需要滚动升级,回滚功能

© www.soinside.com 2019 - 2024. All rights reserved.