基于 Terraform 构建企业内部 kubernetes 集群


1. 为什么要构建企业内部 Kubernetes 集群?

随着企业业务规模的不断扩张,微服务架构逐渐成为主流,应用的数量、版本迭代的频率以及部署的复杂度都在急剧上升。在这一背景下,建立一套稳定、高效、可扩展的企业内部 Kubernetes 集群,成为支撑企业数字化转型的核心基础设施之一。

1.1 构建统一的资源调度平台

企业内部往往同时运行着多条业务线、多个团队的应用服务。Kubernetes 提供了统一的容器编排与资源调度能力,能够将计算、存储、网络资源进行统一抽象和调度,避免各团队烟囱式的资源使用模式,显著提升整体资源利用率。

1.2 支撑 CI/CD 流水线落地

Kubernetes 是现代 CI/CD 流水线的天然载体。通过与 GitLab CI、Jenkins、ArgoCD、Tekton 等工具集成,企业可以实现:

  • 持续集成(CI):代码提交后自动触发构建、测试,产出镜像并推送到私有镜像仓库。
  • 持续交付(CD):基于 GitOps 理念,通过声明式配置驱动应用在集群中的自动发布与回滚。
  • 多环境隔离:通过 Namespace、NetworkPolicy、RBAC 等机制,在同一集群内划分开发、测试、预发、生产等多套环境,降低环境管理成本。

1.3 提升业务稳定性与弹性

Kubernetes 内置的自愈能力(Pod 自动重启、节点故障迁移)、水平自动伸缩(HPA/VPA/KEDA)以及滚动更新策略,能够大幅提升业务服务的可用性和弹性,满足企业对 SLA 的严格要求。

1.4 降低运维复杂度

统一的控制平面使运维团队可以通过标准化的 kubectl 命令或声明式 YAML 配置管理所有工作负载,结合 Helm Chart 进行应用打包与版本管理,有效降低了跨团队、跨项目的运维协作成本。

2. 构建内部 K8s 集群核心流程

2.1 整体流程概览

基础资源准备 → 操作系统初始化 → 集群安装部署 → 网络插件配置 → 存储插件配置 → 集群验证 → 监控告警部署

2.2 基础资源准备

构建 K8s 集群首先需要准备充足的计算、存储和网络资源。

计算资源方案对比:

Read more ⟶

Homebrew 国内下载慢的解决之法及下载过程剖析


对懂点技术的人来说, HomeBrew 几乎成为了 MacOS 上的必装软件,主打一个安装方便,在终端一个命令即可安装配置好。MacOS 下使用的软件大致分为两类: 一类是如 fdneovim 在终端下使用的软件,另一类是如 Google Chrome 的 GUI 软件,通常可在 Apple Store 下载。 终端安软件安装方式: brew install <formula>,GUI 软件安装方式: brew install --cask <cask>,其中的 <formula><cask> 均为你想安装的软件名称, 如果不确定具体名称,可通过: brew search <keyword>搜索。 在国内网络环境下,在 MacOS 上安装软件时,通常会卡在如下所示的流程:

等了好久也没见动静,这是因为默认下载源是从 GitHub 数据中心下载,国内对 GitHub 有限制。

解决办法:配置国内镜像源

目前国内主流的 Homebrew 镜像有:清华大学、阿里云、中科大、腾讯云等。以清华源和阿里云为例,介绍配置方法。

1. 配置清华源

替换 Homebrew 源

#替换 brew.git
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

# 替换 homebrew-core.git
cd "$(brew --repo homebrew/core)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

# 替换 homebrew-cask.git
cd "$(brew --repo homebrew/cask)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git

# 配置 bottle 镜像(formula 二进制)
# 推荐写入 ~/.zshrc 或 ~/.bash_profile
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles

# 立即生效
source ~/.zshrc  # 或 source ~/.bash_profile

# 更新 brew
brew update

2. 配置阿里云源

# 替换 brew.git
cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

# 替换 homebrew-core.git
cd "$(brew --repo homebrew/core)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

# 替换 homebrew-cask.git
cd "$(brew --repo homebrew/cask)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-cask.git

# 配置 bottle 镜像
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
source ~/.zprofile  # 或 source ~/.bash_profile
brew update

其他镜像如中科大、腾讯云等配置方法类似,详见各镜像站帮助文档。

Read more ⟶

0-3 岁孩子应该培养的关键能力


家里有一个快两岁的孩子,我一直在思考,该如何科学地养育他,需要培养哪些核心能力,使他成为一个身心健康、积极上进的人,而不是一味关注他参加多少辅导班、课外兴趣班,或计较他吃得胖瘦。带着这些思考,我咨询了多个“名导”——OpenAI 4o-mini、Kimi、DeepSeek R1等,整合了他们的回答,整体很满意,在自己受用的同时也分享给大家,希望能给有孩子的家长带来一些启发,下面是我整理的内容:

0-3 岁是儿童发展的关键期。此时大脑突触连接数量达到高峰,感官、认知、社交与情感等多方面发展迅速。皮亚杰的感知运动阶段理论、埃里克森的心理社会发展理论,以及哈佛大学、UNESCO 和 WHO 等权威研究,都强调了这一阶段丰富感官刺激、稳定亲子互动与系统性早教的重要性。基于这些理论与实证,个人认为 0-3 岁阶段最应着重培养以下五大关键能力:

  1. 运动能力(Gross & Fine Motor)
  2. 语言能力(Language)
  3. 感官能力(Sensory Integration)
  4. 认知能力(Cognition)
  5. 社交能力(Social-Emotional)

1. 运动能力(Gross & Fine Motor)

运动能力可分为大运动与精细运动:

  • 0-12 个月:重点练习俯卧抬头、翻身、坐稳、爬行等大运动;在 6-12 个月间加入摇铃抓握、拇指对捏、撕纸等精细动作。
  • 12-24 个月:培养独立行走、蹲起、爬梯等大运动,同时进行搭积木、倒水、串珠子等精细练习。
  • 24-36 个月:鼓励跑、跳、单脚站立、平衡木行走等,以提升身体协调与平衡;通过涂鸦、剪纸等活动丰富精细运动体验。
Read more ⟶

Japanese Word Series - Countries


Countries

Hiragana漢字English
にほん日本Japan
ちゅうごく中国China
かんこく韓国Korea
アメリカAmerica
イギリスUnited Kingdom
インドIndia
インドネシアIndonesia
タイTailand
ドイツGermany
フランスFrance
ブラジルBrazil
Read more ⟶

Japanese Word Series - Vegetables & Meat


Vegetables

単語中文
トマト西红柿
ししとう青椒
唐辛子(とうがらし)辣椒
きゆうに黄瓜
かぼちゃ南瓜
冬瓜(とうがん)冬瓜
ゴーヤ苦瓜
オクラ秋葵
なす茄子
ジャガイモ土豆
山芋(やまいも)山药
蓮根(レンコン)莲藕
人参(にんじん)胡萝卜
大根(だいこん)白萝卜
サマネギ洋葱
さつまいも红薯
レタス生菜
ほうれん草菠菜
ネギ大葱
ニラ韭菜
ブロッコリー西兰花

Meat(にく)

単語中文
牛肉(ぎゅうにく)牛肉
豚肉(ぶたにく)猪肉
鶏肉(とりにく)鸡肉
魚(さかな)

References

Read more ⟶

Janpanese Word Series - Fruits


Fruits

単語中文
バナナ香蕉
ぃんご苹果
梨(なし)
桃(もも)
オレンジ橙子
金柑金桔
ぶどう葡萄
いちご草莓
ライチ荔枝
レモン柠檬
ラズベリー树莓
ヤマモモ杨梅
ゆず柚子
マンゴスチン山竹
マンゴ芒果
マルーベリー蓝莓
桑の実(くわのじつ)桑葚
キウイ猕猴桃
柘榴(ざくろ)石榴
スイカ西瓜
Read more ⟶

技术图谱


以下是我根据个人经验整理的技术图谱,主要是为了做技术梳理,同时希望能够给予别人一点帮助,后续会不定期更新。

/images/tech-map.png

Read more ⟶

MacOS 环境批量安装软件


最近工作使用的电脑新换到 MacBook Pro M1 13寸,平时工作使用的各种工具 & 软件都需要重新安装 & 配置,耗时耗力而且没有太多成就感,所以一直在思索如何将其自动化掉,避免每次换电脑都要做重复的劳动。自己平时安装各种软件比较依赖 HomeBrew,印象中它有提供 Brewfile 可以批量安装软件,只是自己一直没有使用起来。刚好趁这次机会拿来练练手,一来总结经验以备下次复用,二来分享出来希望可以帮助到他人。下面分享下我是如何使用 Brewfile 批量安装工作必备软件的。

1. 前提

使用 Brewfile 进行批量安装前,需要安装:

另外若在 Brewfile 中指定 mas 从 AppleStore 安装软件,请保证 AppleID 已登录。

2. 列出所需软件清单,形成 Brewfile

在批量安装前,列出自己平时工作所需的软件,在任意目录下创建名为 Brewfile 的文件,文件内容及格式可以参考我目前使用的 Brewfile 来声明:

# taps
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"

# packages
brew 'vim'
brew 'git'

brew 'zsh'
brew 'tmux'
brew 'ripgrep'
brew 'bat'
brew 'helix'
brew 'jq'
brew 'mas'

# tools
cask 'emacs'
cask 'google-chrome'
cask 'notion'
cask 'alfred'
cask 'warp'
cask 'intellij-idea-ce'
cask 'sequel-pro'
cask 'clashx'
cask 'tunnelblick'

# language
# cask 'java'
brew 'go'
brew 'cmake'
brew 'maven'
brew 'yarn'

# install apps from apple store: 1. mas search <keyword>, find id 2. add one line below 
mas "MindNode", id: 1289197285
mas "CopyClip", id: 595191960
mas "QQ音乐", id: 595615424

文件内容主要分为四部分:

Read more ⟶

域名是如何解析的?


基本概念

我们生活在互联网时代,每天的工作生活几乎都在与互联网打交道,比如使用 Google 查找工作学习所需资料,使用 Youtube、抖音、网易云音乐等进行娱乐活动,通过 Twitter、微博、微信等获取新闻资讯及社交,使用京东、天猫、拼多多等购物,使用微信支付、支付宝支付进行付款等,这些都离不开网络。那么作为构成网络基础设施核心之一的域名(Domain)你知道是如何工作的吗?下面我们简单展开介绍下。

所有的信息都存储在服务器上,可通过 IP 地址访问获取,但通常 IP 地址难以记住,于是乎产生了域名概念。起初网络仅有少数服务器构成,域名到 IP 的映射信息可存储在单个文件(eg: /etc/hosts),随着网络的蓬勃发展,单文件难以容纳所有的域名IP 映射关系,同时映射关系变更时,难以及时同步至各服务器,于是 DNS(Domain Name System) 协议诞生,映射关系通过 DNS 服务器集中存储,用户根据所需向 DNS 服务器查询。那么 DNS 服务器是如何来存储域名映射关系的呢?这个映射关系是谁来负责写入的呢?下面来揭晓。

Read more ⟶

Emacs 常用基本操作


Emacs 作为 Programmer 熟知的两大 Editor 之一流行了很多年了,据说学习曲线陡峭,一直处于劝退状态。但作为喜欢折腾各种工具的自己来说,内心一直有跃跃欲试的想法,终于最近两个月得闲,开始研究学习上了。通过学习官网Tutorials 熟悉其基本操作 & 配置,同时 Google 了解 Emacs 使用频次最高的一些插件,在使用过程中不断优化配置,打造成自己趁手的工具。目前,我主要有三种使用场景: 1. 文本编辑 2. 代码阅读 3. 写业余代码。以下是我在学习过程中整理的常用基本操作,分享出来一方面是当作学习笔记输出,以便后续遗忘时快速查找,另一方面也希望能带给他人一些帮助。

目前的常用操作有:

  • 单文件操作
  • 光标移动
  • 复制(copy) & 粘贴(paste)
  • 插入(insert) & 删除(delete)
  • 撤销(undo) & 重做(redo)
  • 窗口操作
  • 阅读代码常用操作
  • 查看帮助文档

在使用 Emacs 时,有几个关键概念:

  • Buffer
  • Window
  • Frame
  • Mode

请自行查阅文档了解。

注:C-h 表示按住 Ctrl 键的同时按 h 键;M-x 表示按住 Alt/Meta 键的同时按 x 键; S-p f 表示按住 Windows 键,再依次按 p f 键。

Read more ⟶