configmap 更改不会自动反映在相应的 pods
configmap change doesn't reflect automatically on respective pods
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。我怎样才能自动完成?
谢谢你们。能够修复它,我正在使用重新加载程序来反映 pods 如果内部进行了任何更改
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"
它将逐渐重新启动您的 pods。
Pod 和 configmap 在 Kubernetes 中是完全独立的,pods 如果 configmap 发生变化,不会自动重启。
实现这一目标的替代方案很少。
使用 wave,它是一个 Kubernetes 控制器,它会查找特定的注释并在 configmap 有任何变化时更新部署 https://github.com/pusher/wave
使用 https://github.com/stakater/Reloader,重新加载器可以观察 configmap 更改,并可以更新 pod 以选择新配置。
kind: Deployment
metadata:
annotations:
reloader.stakater.com/auto: "true"
spec:
template:
metadata:
您可以在部署和 CI/CD 中添加自定义 configHash 注释,或者在部署应用程序时使用 yq
将该值替换为 configmap 的哈希值,因此如果configmap 中的任何更改。 Kubernetes 将检测部署注释的变化并使用新配置重新加载 pods。
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: ""
参考:here
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。我怎样才能自动完成?
谢谢你们。能够修复它,我正在使用重新加载程序来反映 pods 如果内部进行了任何更改 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"
它将逐渐重新启动您的 pods。
Pod 和 configmap 在 Kubernetes 中是完全独立的,pods 如果 configmap 发生变化,不会自动重启。
实现这一目标的替代方案很少。
使用 wave,它是一个 Kubernetes 控制器,它会查找特定的注释并在 configmap 有任何变化时更新部署 https://github.com/pusher/wave
使用 https://github.com/stakater/Reloader,重新加载器可以观察 configmap 更改,并可以更新 pod 以选择新配置。
kind: Deployment metadata: annotations: reloader.stakater.com/auto: "true" spec: template: metadata:
您可以在部署和 CI/CD 中添加自定义 configHash 注释,或者在部署应用程序时使用
yq
将该值替换为 configmap 的哈希值,因此如果configmap 中的任何更改。 Kubernetes 将检测部署注释的变化并使用新配置重新加载 pods。
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: ""
参考:here