04 K8S之生态系统
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是整个集群的网关。
Node主要由kubelet、kube-proxy和容器引擎等组件构成,kubelet是工作在Kubernetes集群节点之上的代理组件。
完整的Kubernetes集群还需要部署KubeDNS、HeapSter(或Prometheus)、Dashboard和Ingress Controller等几个附加组件。