K8s运维:临时给某个容器增加env

Share
K8s运维:临时给某个容器增加env
Photo by Joseph Barrientos / Unsplash

可以用命令给某个deployment的container增加环境变量吗?

可以,而且非常方便!Kubernetes 专门提供了一个 kubectl set env 命令,让你无需手动修改 YAML 文件,就能直接在终端热更新 Deployment 的环境变量。

以下是具体的命令语法和常见用法:

1. 基础语法

Bash

kubectl set env deployment/<deployment名称> <key>=<value> -n <命名空间>

举个例子:

如果你想给命名空间 tsysmart-test 下的 app-manage-server 增加一个环境变量 ENV_TYPE=test

Bash

kubectl set env deployment/app-manage-server ENV_TYPE=test -n tsysmart-test

2. 高级常用操作

💡 同时增加/修改多个环境变量

直接在后面用空格隔开,连着写即可:

Bash

kubectl set env deployment/app-manage-server ENV_TYPE=test DEBUG_MODE=true -n tsysmart-test

💡 如果 Deployment 里面有多个容器(Container)

默认情况下,该命令会给该 Deployment 下的所有容器都加上这个环境变量。如果你只想给其中某一个特定的容器加,可以用 --containers 参数指定:

Bash

kubectl set env deployment/app-manage-server ENV_TYPE=test --containers="app-container" -n tsysmart-test

💡 如何删除刚刚加的环境变量?

在变量名后面加上一个减号 -(不需要写值),就能把它删掉:

Bash

kubectl set env deployment/app-manage-server ENV_TYPE- -n tsysmart-test

⚠️ 注意事项(运维小贴士)

  1. 触发滚动更新:当你执行 kubectl set env 成功后,Kubernetes 会立刻触发该 Deployment 的滚动更新(Rolling Update)。它会创建新的 Pod,等新 Pod 起来后再销毁旧的 Pod。因此,如果是生产环境,请在低峰期操作。

验证是否生效
命令执行完后,你可以通过以下命令查看容器里的环境变量是否真的变了:Bash

kubectl describe deployment/app-manage-server -n tsysmart-test | grep -A 5 Environment

Read more

【避坑指南】从 TinyDB 文件损坏,聊聊文件截断与磁盘刷盘的底层原理

【避坑指南】从 TinyDB 文件损坏,聊聊文件截断与磁盘刷盘的底层原理

在 Python 轻量级开发中,TinyDB 因其“零部署、文件即数据库、支持对象化查询”的特性,成为了存储配置信息、多租户元数据的神器。 但在高频写入或异常崩溃的场景下,你是否遇到过这样的诡异现象:导出的 JSON 文件末尾莫名其妙多出了几个 NULNUL(\x00)空字节,导致整个数据库报 JSON 无法解析的错误? 本文将带你还原这个经典的“文件空洞”Bug,并分享如何通过自定义存储类 MyJSONStorage 彻底解决它。 一、 现象还原:消失的尾巴与诡异的 NUL 在默认情况下,TinyDB 的 JSONStorage 是这样写入文件的: 1. seek(0) 指针回到文件开头。 2. write(json_data) 写入序列化后的 JSON 字符串。 3. truncate(

By 樊泽豪
搭建K3s集群

搭建K3s集群

K8s环境部署 简介 搭建 K3s + Rancher + Longhorn + MetalLB环境 K3s K3s是一款轻量级Kubernetes发行版,其核心优势在于: * 极致轻量:单个二进制文件不到100MB,仅需512MB内存即可运行,启动和资源消耗远低于标准集群。 * 功能齐全:通过CNCF认证,100%兼容标准Kubernetes API,并内置了常用组件,开箱即用。 * 灵活的数据存储:可以使用外部数据库(mariadb)替代etcd,降低初始资源。 Rancher Rancher是一个开源容器管理平台,核心能力包括: * 统一纳管:可集中管理任意K8s集群(包括K3s/RKE2、云厂商托管集群及已有集群)。 * 降低门槛:提供直观图形界面及开箱即用的CI/CD、监控、服务网格等工具链。 * 安全合规:支持AD/LDAP对接及精细化RBAC,实现跨集群统一安全策略。 Longhorn Longhorn 是一款专为 Kubernetes 设计的轻量级、可靠且易用的分布式块存储系统,它通过容器和微服务将现有存储资源转化为持久卷,

By 樊泽豪
Docker常用操作

Docker常用操作

安装 Windows安装Docker到F盘(非系统盘) Start-Process -FilePath 'Docker_Desktop_Installer.exe' -Wait -ArgumentList "install --installation-dir=F:\DockerDesktop" 改变容器、镜像文件位置 以管理员权限启动Docker Desktop,Settings-Resources-Disk iamge location 配置dockerhub国内源 阿里云:容器镜像服务 (aliyun.com) 其他源 more /etc/docker/daemon.json 输入以下文件: { "registry-mirrors": [ "https://kk8u6omk.mirror.aliyuncs.com", "https:

By 樊泽豪
如何在 Ghost 博客中添加类似 Word 的左侧固定目录(纯干货)

如何在 Ghost 博客中添加类似 Word 的左侧固定目录(纯干货)

当我们在 Ghost 博客中撰写长文时,一个类似 Word 导航窗格的目录能极大提升读者的阅读体验。本文将分享如何通过 Code Injection(代码注入) 快速实现一个完全静止、不随点击乱跳、长标题自动换行的优雅左侧悬浮目录。 实现效果 * 完全固定: 目录稳居文章左侧,只有正文跟随鼠标滚动。 * 绝对静止: 修复了常见插件点击目录项时,目录自身会产生二次跳动的痛点。 * 清晰完整: 长标题自动换行显示,绝不裁剪文字。 * 移动端友好: 在手机或平板等小屏幕上自动隐藏,防止遮挡正文。 部署步骤 无需修改任何主题源文件,只需登录 Ghost 后台,进入 Settings -> Code Injection(代码注入),将以下两段代码全选覆盖粘贴即可。 1. 注入到 【Site Header】 在 Site Header 框中复制并完全粘贴以下代码(包含 Tocbot 官方样式与自定义微调

By 樊泽豪