kubernetes 如何更改正在运行的pod名称?

hwamh0ep  于 12个月前  发布在  Kubernetes
关注(0)|答案(2)|浏览(137)

1.我有两个pod,它们被称为nginx-111-xxxnginx-111-yyy,但nginx-111-xxx中有错误,我需要创建一个新的pod来替换它,因为需求要求你删除nginx-111-xxx,然后新建一个podnginx-111-zzz,我可以用nginx-111-xxx**重命名nginx-111-zzz吗?我尝试使用kubectl edit命令来实现,
1.但是Kubernetes说 * 您的更改副本已存储到“/tmp/kubectl-edit-oh43e.yaml”错误:apiVersion,kind和name中至少有一个被更改 *,所以是否有方法更改运行pod的名称?x1c 0d1x

eoigrqb6

eoigrqb61#

无法更改运行中的pod的名称,因为API不接受此操作。
实际上,你正在使用Kubernetes部署,这是在Kubernetes上运行pod的默认或最常用的方法。但是,除此之外,还有不同的方法来调度pod。
然而,出于某种原因,您似乎需要更可预测的pod名称。以下是一些方法:
1.使用StatefulSets(https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)。StatefulSet创建的pod的名字会像nginx-01nginx-02..
1.直接使用pod。这样,你就不会有那些来自副本集、守护进程集等的滚动更新特性,而是对命名有绝对的控制权

nbewdwxp

nbewdwxp2#

我强烈建议您按照建议使用statefulSet。但是,请记住,编辑正在运行的pod的规格时应谨慎,以避免中断。以下字段可以为现有pod进行编辑:

- spec.containers[*].image
 - spec.initContainers[*].image
 - spec.activeDeadlineSeconds
 - spec.tolerations

字符串
要进行更改,您有两个选项:

使用kubectl edit:

运行kubectl edit pod <pod name>在vi编辑器中打开pod规范。尝试直接保存更改将被拒绝,但修改后文件的副本将保存在临时位置。使用kubectl delete pod删除现有pod,然后使用kubectl create -f /tmp/kubectl-edit-<random-string>.yaml.(在您的案例中为kubectl create -f /tmp/kubectl-edit-oh43e.yaml)创建一个新的pod

使用导出的YAML:

使用kubectl get pod <pod name> -o yaml > my-new-pod.yaml将pod定义提取到YAML文件中。使用vi (vi my-new-pod.yaml) 编辑导出的文件。保存更改,使用kubectl delete pod删除现有pod,然后使用kubectl create -f my-new-pod.yaml创建新pod

相关问题