K8s 下一个Pod安装多个应用容器场景

1、K8s 下一个Pod安装多个应用容器

1.1、什么时候一个 Pod 会有多个容器?

多个容器需要协作完成某个功能,且必须共享:

  • 网络命名空间(如监听同一个端口)

  • 存储卷(如写入同一日志目录)

  • 生命周期(一起启动、一起关闭)

1.1、生产环境中常见的场景

场景主容器Sidecar 容器用途
web应用+日志收集一个 Spring Boot应用或Node.js或go接口服务fluent-bit,把日志发送到集中的日志监控系统
TLS 自动刷新证书Nginx / Envoycert-manager 插件定期刷新证书
数据库连接代理AppIstio sidecar / Envoy 代理流量
自动配置加载App容器 A 写入 config 容器 B 读取
容器运行所需环境初始化主容器init 容器设置密钥、文件、权限

2、日志收集 sidecar 容器

🌍 场景:Web 应用 + 日志收集

在很多生产环境中,你的主容器会写日志到本地磁盘 /var/log/app.log,然后希望这些日志能被统一收集起来,比如发到 ELK、Loki、Fluentd。

💡 Pod 中的两个容器:

1️⃣ 主容器:web-app
  • 一个 Spring Boot 或 Node.js 应用

  • 把运行日志输出到 /var/log/app.log

2️⃣ sidecar 容器:fluent-bit
  • 持续监控 /var/log/app.log 文件

  • 把日志实时转发到集中式日志系统,比如 Loki、ES


3、TLS 自动刷新证书:给服务自动续签 HTTPS 证书

📌 场景:

你有一个网站,外部用户用 Example Domain 访问,为了安全你用了 Let’s Encrypt 的免费 TLS 证书。但是这些证书每 90 天就会过期一次

🧩 多容器怎么协作?
  • 主容器:Nginx / Envoy / Web 应用

    • 提供服务,使用 HTTPS 加密
  • Sidecar 容器:cert-manager 或 ACME 客户端

    • 定期去 Let’s Encrypt 拉取最新证书

    • 把新证书写入共享目录,主容器自动 reload

✅ 价值:

无需人工操作,自动完成 TLS 证书的获取和续签,保障线上服务安全不中断。


4、数据库连接代理:访问数据库时自动加密/鉴权

📌 场景:

某些数据库只允许通过“内部安全代理”连接,比如:

  • Google Cloud SQL / AWS RDS

  • 或者你启用了数据库的 mTLS 或基于 IAM 的鉴权

🧩 多容器怎么协作?
  • 主容器:Java 应用 / Node.js 服务

    • 它以为自己连接的是 localhost:3306
  • Sidecar 容器:Cloud SQL Proxy / RDS Auth Proxy

    • 实际去连接远程数据库 + 做加密 + 权限校验

    • 主容器只需“以为”数据库就在本地

✅ 价值:

业务代码不需要知道数据库的真实地址、安全细节;安全逻辑由 sidecar 代理完成,透明又安全


4、自动配置加载:读取不断变化的配置数据

📌 场景:

你的服务需要读取某个配置(如访问第三方 API 的密钥),但这个密钥每天轮换,比如放在:

  • K8s Secret

  • 外部配置系统(如 Consul、Vault)

🧩 多容器怎么协作?
  • 主容器:业务应用

    • 定期或启动时读取 /config/api-token.json
  • Sidecar 容器:配置同步器(如 Vault Agent)

    • 每隔 10 分钟从 Vault 拉配置,写入共享 volume 中
✅ 价值:

你的应用不需要关心配置从哪来,只关心读文件即可。配置变化由 sidecar 保证。


5、容器运行所需环境初始化:Pod 启动前做准备工作

📌 场景:

你的应用在启动前,需要先做一些准备工作,比如:

  • 初始化数据库结构

  • 拉取基础数据

  • 准备依赖目录或文件

🧩 多容器怎么协作?
  • Init 容器(特殊的 Sidecar):

    • 运行一次,在主容器启动前执行

    • 例如 python init.py 把数据库 schema 初始化好

  • 主容器:应用本体

    • init 容器执行完才启动

6、数据代理详细说明

✅生产环境中最常用和推荐的数据库连接代理工具总结表:

场景推荐工具是否官方支持是否开源适合谁用备注
Google Cloud SQL (MySQL/PostgreSQL)cloud-sql-proxy✅ 是✅ 是使用 GCP 的公司GCP 官方最佳实践
AWS RDS(IAM 鉴权)aws-rds-auth-proxy / IAM auth token✅ 是✅ 是使用 AWS 的公司无需存储密码,IAM 鉴权
本地私有云 / 传统 IDC / 普通 MySQLenvoy / haproxy / proxysql❌(第三方)✅ 是复杂场景,如读写分离、SQL 路由强大但运维成本高
阿里云 RDS内网直连 + RAM 鉴权代理(无官方 proxy)⚠️ 部分支持❌ 无使用阿里云的公司通常结合 VPC + SLB 做内网隔离
数据库凭据托管(HashiCorp Vault)vault-agent(sidecar)+ 动态生成密码✅ 是✅ 是对安全要求极高的团队密码自动轮换 + 自动注入

6.2、推荐:Cloud SQL Proxy / AWS RDS Auth Proxy

  • 优点:

    • 官方维护,开箱即用

    • 支持身份鉴权(IAM / Service Account)

    • 安全性高,不用在 Java 项目里配置明文密码

    • 容器化部署友好(sidecar)

    • 自动 TLS、自动续签

  • 适用前提:

    • 你的数据库部署在 云平台(如 GCP / AWS)

6.3、如果你是自己部署的 MySQL

✅ 轻量级通用方案:ProxySQL或Envoy

  • ProxySQL:

    • 适合复杂查询场景(如 SQL 路由、分库分表、读写分离)

    • 社区稳定,MySQL 场景广泛使用

  • Envoy:

    • 可作为通用 TCP proxy,用于 Kubernetes sidecar 架构

    • 与 Istio、Consul 等集成非常方便

🎯 总结一句话:

如果你用 云数据库(GCP/AWS),那就优先选 官方 proxy(如 cloud-sql-proxy、aws-rds-auth-proxy),安全、无密码、免维护;

如果你用的是自己部署的 MySQL,想要 SQL 路由和读写分离,可以考虑 ProxySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值