Kubernetes(K8s)已成为大规模部署容器化应用程序的标准平台。大多数开发者通过公司的基础设施接触它,但了解得很不够。以下是真正重要的内容。
Kubernetes做什么
Kubernetes管理多台机器(节点)上的容器。给定期望状态(我的应用程序的5个实例,每个2个CPU、4GB内存,零停机时间更新它们),Kubernetes持续工作以实现和维护该状态——启动容器、重启失败的容器、分发流量和管理更新。核心价值:不是手动管理单个服务器,而是描述你想要什么,Kubernetes处理如何做到。
开发者关心的对象
Pod:共享网络和存储的一个或多个容器。最小的可部署单元。Deployment:管理一组相同的Pod——处理副本、滚动更新和回滚。这通常是你部署应用程序时创建的内容。Service:路由流量到Pod(有临时IP)的稳定网络端点。ConfigMap/Secret:作为环境变量或挂载文件注入容器的配置和凭证。Ingress:通过带路由规则的HTTP/HTTPS将Service暴露到外部互联网。
你每天会用的kubectl命令
kubectl get pods -n namespace # 列出命名空间中的pod
kubectl logs pod-name -f # 流式传输pod日志
kubectl describe pod pod-name # 调试pod事件和状态
kubectl exec -it pod-name -- bash # 进入运行中的pod的shell
kubectl apply -f deployment.yaml # 应用配置文件
kubectl rollout status deployment/name # 检查更新进度
kubectl rollout undo deployment/name # 回滚到上一版本
何时不使用Kubernetes
Kubernetes的运营开销很大。对于小团队和小应用程序,托管替代品(Render、Railway、Fly.io、Google Cloud Run)提供类似的能力,复杂度低得多。Kubernetes在以下情况有意义:你有专用的平台/基础设施团队、你在需要自定义资源调度的规模运行,或者你需要只有K8s提供的功能(自定义Operator、细粒度网络策略)。




