作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们上一小节介绍了注解(Annotations)的功能可以用于标注各种资源的属性,其实它不仅仅可以标注资源属性,还可以作为某些资源功能的开关。然后我们在Kubernets(k8s)-ConfigMap的时候介绍过,更新ConfigMap并会触发业务重启,而我们今天要讲解的Reloader就可以利用注解(Annotations)把业务的自动更新实现。
Reloader 是一个Kubernetes控制器,它可以监控配置文件(ConfigMap)或秘密(Secrets)的变化,并在这些资源发生变化时重新启动或重新加载相应的Pod。这在配置文件或证书等敏感信息更新时非常有用,因为它可以确保Pod使用了最新的配置或证书。
Reloader
#使用helm安装,具体ns可以调整和修改
#添加仓库
helm repo add stakater https://stakater.github.io/stakater-charts
#安装reloader
helm install reloader stakater/reloader --namespace kube-system
#直接使用yaml文件
kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
我们这里使用yaml文件安装,我们可以看见它创建了什么资源可以更容易理解里面的逻辑,这个逻辑和我们讲ServiceAccount的逻辑是一样的,也可以进去看看它具体是申请了哪些权限。当Pod正常拉起以后,我们就可以
在部署你的应用程序时,你需要在工作负载中添加相应的注解(Annotations),以指示Reloader如何处理配置更新。
例如,以下是一个具有ConfigMap和Secret监视的Deployment的示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: myapp
annotations:
reloader.stakater.com/auto: "true" # 启用Reloader自动重载
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx
image: 192.168.31.43:5000/nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-conf-volume
mountPath: /etc/nginx/conf.d # 假设这是Nginx配置文件的位置
volumes:
- name: nginx-conf-volume
configMap:
name: nginx-config # 引用的ConfigMap名称
#下面的事件就是该Deploy因为更新了cm,而触发Pod更新
Normal Reloaded 87s (x2 over 2m57s) reloader-configMaps Changes detected in 'nginx-config' of type 'CONFIGMAP' in namespace 'default', Updated 'nginx-deployment' of type 'Deployment' in namespace 'default'
Normal ScalingReplicaSet 87s deployment-controller Scaled up replica set nginx-deployment-5c78d84c48 to 1
Normal ScalingReplicaSet 86s deployment-controller Scaled down replica set nginx-deployment-5dcf45bb6b to 0
reloader
还支持更复杂的重新加载策略,例如:
描述
reloader
控制器有足够的权限来监视和重启你的Pod,所以可以查看集群角色的权限是怎么申请的。reloader
的配置。reloader
是一个非常有用的工具,特别是在需要动态更新应用程序配置的场景中。通过自动化配置更新后的Pod重启,它可以大大简化Kubernetes集群的管理工作。
但是我们也在生产环境遇到过大面积的Pod意外重启的情况,虽然并没有发生故障,但是这也是一个不太好的情况。一般而言就是集群部署的时候会打开这个功能,当集群运行以后就会给关闭这个功能。
历史推荐内容Docker-docker基本信息,基本命令,dockerfile,原理,仓库,存储网络日志,番外篇云计算&虚拟化-包括服务器购买,虚拟化介绍,虚拟磁盘,虚拟网络,创建虚拟机,安装虚拟机,dashboard,xml解释,克隆,快照,初始化,esxi介绍。Linux进阶-包括硬件,日常运维,基础软件,日志,进阶命令,防火墙,shell编程,内核,linux系统及初始化Linux基础-包括文件的增删改查,磁盘管理,网络配置,用户配置,权限配置 |
---|