1. 概述
  • Kubernetes: 是一个开源平台,用于自动部署、扩展和管理容器化应用程序。
  • K8s: Kubernetes的缩写形式。
2. 核心组件
  • etcd: 用于保存Kubernetes的所有数据,是分布式键值存储。
  • API Server: 是系统的前端,负责处理用户命令和集群内部控制流。
  • Scheduler: 负责决定将Pods分配到集群中的哪些节点。
  • Controller Manager: 运行控制器进程,处理集群中各种自动化任务。
  • Cloud Controller Manager: 允许将特定云平台的控制逻辑插入到Kubernetes控制平面。
  • Kubelet: 在每个节点上运行,保证容器运行在Pod中。
  • Kube-proxy: 负责网络规则的实现和网络策略的维护。
3. 核心概念
  • Pod: Kubernetes中的最小部署单元,可以包含一个或多个容器。
  • Service: 定义了一种访问Pod的方式,无论Pod如何变化,Service都保持不变。
  • Deployment: 管理Pod的声明式更新和扩缩容。
  • Namespace: 用于将系统内部的对象分组,通常是按照业务逻辑划分。
  • Volume: 允许将数据持久化存储,与Pod的生命周期无关。
4. 网络
  • CNI (Container Network Interface): 插件用于配置Pod的网络。
  • Ingress: 管理外部访问应用的规则,通常用于HTTP路由。
  • Egress: 管理应用的出站(外部)网络连接。
5. 安全性
  • RBAC (Role-Based Access Control): 基于角色的访问控制,定义用户或组可以执行的操作。
  • Secret: 包含敏感信息,如密码、令牌或密钥,以加密形式存储。
6. 存储
  • Persistent Volume (PV): 集群中的一块存储,已经被预先配置好,可以被多个Pod使用。
  • Persistent Volume Claim (PVC): 类似于Pod,是用户对PV提出的请求。
7. 扩展与部署
  • Horizontal Pod Autoscaler (HPA): 根据CPU使用率或其他选择的度量标准自动扩展Pod的数量。
  • Rolling Update: 一种更新Pods的方式,可以保证服务不断可用。
8. 调试与日志
  • kubectl logs: 用于查看容器的日志。
  • kubectl describe: 查看资源的详细信息,包括事件和配置。
9. 安装与配置
  • Minikube: 用于在本地运行单节点Kubernetes集群的工具。
  • kubeadm: 用于在生产环境初始化Kubernetes集群的工具。
10. 学习资源
  • Kubernetes Documentation: 官方文档是学习Kubernetes的权威资源。
  • CNCF (Cloud Native Computing Foundation): 提供了大量关于Kubernetes和云原生计算的资源。