前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【K8s】专题十九:Kubernetes 配置之热更新工具 Reloader

【K8s】专题十九:Kubernetes 配置之热更新工具 Reloader

作者头像
行者Sun
发布2024-09-02 12:44:05
1090
发布2024-09-02 12:44:05
举报
文章被收录于专栏:Kubernetes

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

基本介绍

Reloader 是一个用于 Kubernetes 的工具,能够监听 Kubernetes 中 ConfigMap 和 Secret 的变化,并通过自动触发 Deployment、StatefulSet、Daemonset 等对象重启,实现应用程序配置的热更新(重新加载)。

工作原理

  • 监听配置:Reloader 会监听指定 ConfigMap 或 Secret 的配置文件
  • 触发事件:当检测到配置文件内容发生变化时,Reloader 会触发一个事件
  • 重新加载:Reloader 向控制器发送信号,请求重启 Deployment、StatefulSet、Daemonset 等对象

部署方法

1、资源清单

代码语言:javascript
复制
# reloader.yaml
## 定义 RBAC 对象
apiVersion: v1
kind: ServiceAccount
metadata:
  name: reloader
 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: reloader-role
rules:
  - apiGroups:
      - ""
    resources:
      - secrets
      - configmaps
    verbs:
      - list
      - get
      - watch
  - apiGroups:
      - "apps"
    resources:
      - deployments
      - daemonsets
      - statefulsets
    verbs:
      - list
      - get
      - update
      - patch
  - apiGroups:
      - "extensions"
    resources:
      - deployments
      - daemonsets
    verbs:
      - list
      - get
      - update
      - patch
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: reloader-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: reloader-role
subjects:
  - kind: ServiceAccount
    name: reloader
 
## 定义 Deployment 对象
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reloader
spec:
  replicas: 1
  revisionHistoryLimit: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  selector:
    matchLabels:
      app: reloader
  template:
    metadata:
      labels:
        app: reloader
    spec:
      containers:
      - name: reloader
        image: stakater/reloader:v1.0.12
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 9090
        env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        startupProbe:
          httpGet:
            path: /metrics
            port: http
          initialDelaySeconds: 5
          periodSeconds: 5
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 10
        readinessProbe:
          httpGet:
            path: /metrics
            port: http
          initialDelaySeconds: 5
          periodSeconds: 5
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        livenessProbe:
          httpGet:
            path: /live
            port: http
          initialDelaySeconds: 5
          periodSeconds: 5
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        resources:
          limits:
            cpu: 200m
            memory: 200Mi
          requests:
            cpu: 20m
            memory: 20Mi
      restartPolicy: Always
      securityContext: 
        runAsNonRoot: true
        runAsUser: 65534
      serviceAccountName: reloader

2、部署命令

代码语言:javascript
复制
kubectl apply -f reloader.yaml

使用方法

在 Deployment、StatefulSet、DaemonSet 等对象的资源清单中,添加相应的 Annotation 注解即可,示例如下:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  nanme: demo-deployment
  annotations:
    reloader.stakater.com/auto: "true"
...
 
 
🔔 reloader.stakater.com/auto: "true":对所有 ConfigMap 和 Secret 对象生效
🔔 configmap.reloader.stakater.com/reload: "demo1,demo2,...":对指定的 ConfigMap 对象生效
🔔 secret.reloader.stakater.com/reload: "demo1,demo2,...":对指定的 Secret 对象生效
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 实施运维知识交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档