如何更新 kubernetes 复制控制器?

how to update kubernetes replication controller?

我 运行 pods 使用复制控制器,现在我想编辑配置,例如更改环境值并保留 rc 的名称。

apiVersion: v1
kind: ReplicationController
metadata:
  name: backend
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: backend
        image: myproject/backend
        ports:
        - containerPort: 8080
        env:
        - name: USER_ENDPOINT
          value: "http://10.0.7.29:10000"

例如,我将服务移至新服务器,只想将 env USER_ENDPOINT 的值更改为 http://10.0.7.30:30100

现在我只知道跟随删除rc并重新创建rc,但在生产中我不会停止它。

我尝试 rolling-update 但没有成功,因为我想保留复制控制器的名称。

我能做什么?

请提出解决方案,谢谢。

您可以使用 HTTP PATCH 方法部分更新 RC,如下所示(假设您的 RC 在 default 命名空间中):

PATCH /api/v1/namespaces/default/replicationcontrollers/backend

另见 API Reference

您可以使用 kubectl edit 编辑资源:

Usage:
  kubectl edit (RESOURCE/NAME | -f FILENAME) [flags]

Examples:
  # Edit the service named 'docker-registry':
  $ kubectl edit svc/docker-registry

  # Use an alternative editor
  $ KUBE_EDITOR="nano" kubectl edit svc/docker-registry

  # Edit the service 'docker-registry' in JSON using the v1 API format:
  $ kubectl edit svc/docker-registry --output-version=v1 -o json

^^ 来自 kubectl 帮助