如何在kubernetes集群上修补statefulset并设置imagePullPolicy

时间:2019-04-11 13:56:34

标签: kubernetes patch

需要准确了解补丁程序的工作原理。例如,我如何修补“ imagePullPolicy”。有人可以简单地解释补丁如何工作。

kubectl patch statefulset my-set -p '{"spec":{"containers":{"imagePullPolicy":"IfNotPresent"}}}'

这不起作用是怎么回事?

2 个答案:

答案 0 :(得分:1)

我认为您在命令中缺少模板密钥

kubectl patch statefulset my-set -p '{"spec": {"template": {"spec":{"containers":[{"name": "xxxxxxx", "imagePullPolicy":"IfNotPresent"}]}}}}'

有状态集合yaml看起来像这样

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

因此,容器字段的路径为

  

规格>>模板>>规格>>容器

答案 1 :(得分:1)

除了@Colwins答案外,您还应该在容器规范中添加必填键名称,否则您将获得does not contain declared merge key: name

因此,您的kubectl命令应如下所示:

kubectl patch statefulset my-set -p '{"spec": {"template": {"spec":{"containers":[{"name":"nginx","imagePullPolicy":"Never"}]}}}}'