【发布时间】:2016-01-11 19:13:52
【问题描述】:
我在 GKE 上的 Kubernetes 中有以下复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 2
selector:
app: myapp
deployment: initial
template:
metadata:
labels:
app: myapp
deployment: initial
spec:
containers:
- name: myapp
image: myregistry.com/myapp:5c3dda6b
ports:
- containerPort: 80
imagePullPolicy: Always
imagePullSecrets:
- name: myregistry.com-registry-key
现在,如果我说
kubectl rolling-update myapp --image=us.gcr.io/project-107012/myapp:5c3dda6b
执行滚动更新,但不重新拉取。为什么?
【问题讨论】:
-
我给出了不同的图像,只是使用了相同的标签。如果有必要给出不同的标签,好吧,我在
imagePullPolicy字段中看不到任何意义。 -
我想使用一个特定的标签,但它是最新版本。
-
@TorstenBronger 我认为这是 Kubernetes/Docker 理论的重大变革。您可以在两个不同时间提取 image:tag(最新的除外)并获取两个不同的图像的想法是有问题的。标签类似于版本号。更好的做法是在图像更改时始终更改标签。
-
视情况而定。有些软件的 API 非常稳定,但有安全更新。然后,我想要最新的版本,而不必明确表示。
-
@TorstenBronger 关于使用
latest,不要这样做。最新将使用最新标签提取最近的图像。你想要的是一个 SemVer 范围。以~1.2.3 为例。这将提取标签范围在 >= 1.2.3 和 SemVer,您就知道(这是重要的部分),就不会(故意)添加反向破坏性更改,也不会添加新功能(可能存在安全问题)。请不要在生产系统中使用latest。
标签: image pull kubernetes