Kubernetes知识综合备忘单

💡 原文中文,约11000字,阅读约需27分钟。
📝

内容提要

Kubernetes是一种容器编排平台,简化应用程序的部署、扩展和管理。文章介绍了Kubernetes的基本概念、常用命令和最佳实践,包括Pod、部署和副本集、服务和网络、配置和安全、监控和故障排除。还介绍了Helm图表和节点、命名空间、服务和部署的管理命令。

🔎

延伸解读

从命令速查到架构理解:备忘单的定位

本文以快速参考表开篇,将Pod、Node、Deployment、Service等核心术语与kubectl命令并列呈现,适合作为日常操作的速查手册。但需注意,它并非系统性教程,而是假设读者已具备基础概念。若你是初学者,建议先理解控制平面组件(API服务器、etcd等)的职责,再结合命令实践,否则容易陷入“会敲命令但不解其意”的困境。

多容器Pod模式:协作而非堆砌

文章用YAML示例展示了边车、Ambassador和适配器三种多容器模式,强调它们在不修改主应用的前提下扩展功能。这提示我们:多容器Pod的核心价值在于职责分离与资源共享,而非简单地把多个容器塞进一个Pod。实际使用时需注意,这些容器共享网络命名空间,可通过localhost通信,但也意味着生命周期绑定,需谨慎设计以避免单点故障。

部署与副本集:声明式管理的实际含义

文章详细描述了Deployment的生命周期,包括创建、ReplicaSet生成、Pod创建、扩缩容、滚动更新和终止。这揭示了Kubernetes声明式管理的本质:你定义期望状态,控制器负责达成并维持。滚动更新通过新建ReplicaSet并逐步缩旧来实现,配合kubectl rollout status和undo命令,可在更新异常时快速回退。理解这一机制,有助于避免直接操作Pod带来的管理混乱。

配置与安全:Secret管理的实践要点

文章在ConfigMap和Secret部分列出了安全实践,如使用RBAC控制访问、避免硬编码、定期轮换机密等。这些建议直指常见风险:将敏感信息明文写入镜像或代码仓库。但文章未深入讨论Secret的加密存储(如etcd加密)或外部密钥管理集成,因此在实际生产环境中,还需结合集群的安全配置和合规要求,不能仅依赖基础Secret对象。

❓

Q&A

Kubernetes 是什么?它主要解决什么问题?

Kubernetes(K8s)是一个容器编排平台,用于简化容器化应用程序的部署、扩展和管理。它通过提供统一平台消除底层基础设施的复杂性,使应用能在不同环境中一致地部署和管理,从而促进可移植性和可扩展性。

Kubernetes 中 Pod 和 Node 有什么区别?

Pod 是 Kubernetes 中最小的可部署单元,代表正在运行的进程的单个实例,可以包含一个或多个共享网络命名空间的容器。Node 是集群中的物理机或虚拟机,为 Pod 提供运行环境。

在 Kubernetes 中如何扩展部署和管理滚动更新?

扩展部署可使用 kubectl scale deployment <deployment_name> --replicas=<num>,或基于 CPU 利用率自动缩放:kubectl autoscale deployment <deployment_name> --cpu-percent=<percentage> --min=<min_replicas> --max=<max_replicas>。管理滚动更新可使用 kubectl set image 更新镜像、kubectl rollout status 监控进度、kubectl rollout undo 回滚、kubectl rollout pause/resume 暂停和恢复。

Kubernetes 中 ConfigMap 和 Secret 有什么作用?使用 Secret 有哪些安全实践?

ConfigMap 用于集中管理非敏感配置,Secret 用于安全存储密码等敏感信息。使用 Secret 的安全实践包括:利用内置 Secrets API、加密传输中的数据、实施 RBAC 控制访问、避免硬编码秘密、定期轮换机密。

Kubernetes 中常用的监控和故障排除工具有哪些?如何排查 Pod 问题?

常用监控工具包括 Prometheus、Grafana 和 cAdvisor,可提供集群运行状况的深入信息。排查 Pod 问题可使用 kubectl logs <pod_name> 检查日志,或 kubectl describe pod <pod_name> 获取详细信息。

Helm 在 Kubernetes 中有什么作用?如何安装和使用 Helm 图表?

Helm 是 Kubernetes 中的包管理工具,用于简化应用程序的安装和管理。安装 Helm 可执行 curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash,添加仓库使用 helm repo add stable https://charts.helm.sh/stable,安装图表使用 helm install my-release stable/<chart_name>,升级使用 helm upgrade,卸载使用 helm uninstall。

Kubernetes 中多容器 Pod 有哪些常见模式?

多容器 Pod 的常见模式包括:边车模式(Sidecar),辅助容器与主容器一起运行提供附加功能;Ambassador 模式,代理容器充当中介处理通信和网络任务;适配器模式(Adapter),适配器容器在数据到达主应用前进行转换或适配。

Kubernetes 中如何管理节点和命名空间?

节点管理命令包括:kubectl get nodes 显示节点信息、kubectl describe node <node_name> 查看详情、kubectl label nodes 添加标签、kubectl cordon 标记不可调度、kubectl uncordon 恢复调度、kubectl drain 安全驱逐 Pod。命名空间管理命令包括:kubectl get namespaces 列出所有命名空间、kubectl create namespace <namespace_name> 创建命名空间、kubectl describe namespace <namespace_name> 查看详情。

🏷️

标签

➡️

继续阅读