在Kubernetes中重命名部署



如果我做kubectl get deployments,我得到:

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
analytics-rethinkdb   1         1         1            1           18h
frontend              1         1         1            1           6h
queue                 1         1         1            1           6h

是否可以将部署重命名为rethinkdb ?我曾尝试在谷歌搜索kubectl edit analytics-rethinkdb并更改yaml中的名称,但这会导致错误:

$ kubectl edit deployments/analytics-rethinkdb
error: metadata.name should not be changed

我意识到我可以只kubectl delete deployments/analytics-rethinkdb,然后做kubectl run analytics --image=rethinkdb --command -- rethinkdb etc etc,但我觉得应该可以简单地重命名它,不是吗?

对象名称在Kubernetes中是不可变的。如果要更改名称,可以使用不同的名称导出/编辑/重新创建

正如其他人提到的,kubernetes对象的名称是不可变的,因此从技术上讲,重命名是不可能的。

模仿类似行为的一种黑客方法是删除一个对象并用不同的名称创建它。这有点危险,因为根据你的对象可能会发生一些冲突。命令行方法可能像这样:
    kubectl get deployment analytics-rethinkdb -o json 
        | jq '.metadata.name = "rethinkdb"' 
        | kubectl apply -f - && 
    kubectl delete deployment analytics-rethinkdb

最新更新