Kubernetes 是一个支持弹性运行的分布式系统框架,是一种支撑其他平台的平台型基础设施,可以帮助用户在生产环境中依托容器实施的基础架构。Kubernetes 的本质在于实现操作任务自动化,包括应用扩展、故障转移和部署模式等,因而它能代替用户执行大部分烦琐的操作任务,减轻用户负担,降低出错的概率。
以应用为中心的 Kubernetes 本身并未直接提供一套完整的“开箱即用”的应用管理体系,需要基础设施工程师基于云原生社区和生态的实际需求手动构建。换句话说,在典型的生产应用场景中,Kubernetes 还需要同网络、存储、遥测(监控和日志)、镜像仓库、负载均衡器、CI/CD 工具链及其他服务整合,以提供完整且 API 风格统一的基础设施平台。
Docker Registry 和工件仓库:通过 Harbor 工件仓库、Docker Registry 等项目实现。
网络:借助 Flannel、Calico 或 WeaveNet 等项目实现。
遥测:借助 Prometheus 和 EFK 栈(或者由 Promtail、Loki 和 Grafana 组成的 PLG 栈)等项目实现。
容器化工作负载:借助 Kubernetes 内置的工作负载控制器资源,甚至由社区扩展而来的各种 Operator 完成应用的自动化编排,包括自愈和自动扩缩容等;而便捷的应用打包则要借助 Helm 或 Kustomize 等项目完成。
基于容器编排系统的 CI/CD:借助 Jenkins、Tekton、Flagger 或 Kepton 等项目,甚至遵循 GitOps 规范实现应用交付、发布和部署等。
Kubernetes 集群主要由 Master 和 Node 两类节点组成。
Master 主要包含 apiserver、controller-manager、scheduler 和 etcd 这几个组件,其中 apiserver 是整个集群的网关。