configmap更改不会自动反映在相应的pod上

时间:2019-07-09 14:18:57

标签: kubernetes kubernetes-pod

apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: consoleservice1
    spec:
      selector:
        matchLabels:
          app: consoleservice1
      replicas: 3 # tells deployment to run 3 pods matching the template
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 1
      minReadySeconds: 5
      template: # create pods using pod definition in this template
        metadata:
          labels:
            app: consoleservice1
        spec:
          containers:
          - name: consoleservice
            image: chintamani/insightvu:ms-console1
            readinessProbe:
              httpGet:
                path: /
                port: 8385
              initialDelaySeconds: 5
              periodSeconds: 5
              successThreshold: 1
            ports:
            - containerPort: 8384
            imagePullPolicy: Always
            volumeMounts:
              - mountPath: /deploy/config
                name: config
          volumes:
            - name: config
              configMap:
                name: console-config

我使用以下命令创建configmap:

kubectl create configmap console-config --from-file=deploy/config

在configmap中进行更改时,每次我必须重新启动Pod时,它不会自动反映。我如何自动做到?

2 个答案:

答案 0 :(得分:1)

谢谢你们。能够修复它,如果内部进行了任何更改,我正在使用重新加载程序来反映Pod kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml

然后在您的deployment.yml文件中添加注释。

apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: consoleservice1
  annotations:
    configmap.reloader.stakater.com/reload: "console-config"

它将逐渐重新启动您的广告连播。

答案 1 :(得分:0)

在Kubernetes中Pod和configmap完全分开,如果configmap发生更改,pod不会自动重新启动。

实现这一目标的方法很少。

  1. 使用wave,它是Kubernetes控制器,用于查找特定注释并在configmap http://artsites.ucsc.edu/ems/music/equipment/computers/bits_bytes/bits_bytes.html

  2. 中进行任何更改时更新部署
  3. 使用https://github.com/pusher/wave,重新加载程序可以监视configmap的更改,并可以更新pod来选择新的配置。

        kind: Deployment
        metadata:
          annotations:
            reloader.stakater.com/auto: "true"
        spec:
          template:
            metadata:
    
  4. 您可以在部署中以及在CI / CD中或在部署应用程序时添加自定义configHash批注,使用yq将configmap的哈希值替换为该值,以便在configmap中进行任何更改的情况下使用。 Kubernetes将检测部署注释中的更改,并使用新配置重新加载Pod。

yq w --inplace deployment.yaml spec.template.metadata.annotations.configHash $(kubectl get cm/configmap -oyaml | sha256sum)

        apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
        kind: Deployment
        metadata:
          name: application
        spec:
          selector:
            matchLabels:
              app: consoleservice1
          replicas: 3              
          template:
            metadata:
              labels:
                app: consoleservice1
              annotations:
                configHash: ""

参考:https://github.com/stakater/Reloader