Docker - Kubernetes 架构
Docker - Kubernetes 架构介绍
Section titled “Docker - Kubernetes 架构介绍”Kubernetes(通常简写为 K8s)是一个强大的开源系统,用于自动化容器化应用的部署、扩缩和管理。虽然 Docker 提供了容器运行时,但 Kubernetes 可以在机器集群中编排这些容器。
可以将 Docker 看作是构建标准化集装箱(您的应用镜像),而 Kubernetes 则是全球航运物流系统(大规模管理这些集装箱在哪里以及如何运行)。
Kubernetes 集群由两种主要类型的组件组成:
- 控制平面 (Control Plane, 曾称作 Master Node): 管理整个集群状态。它对集群做出全局决策(例如,调度应用)并检测和响应集群事件。
- 工作节点 (Worker Nodes, 曾称作 Minions): 这些是实际运行您的容器化应用的机器(VM 或物理服务器)。
控制平面组件通常运行在专用机器上,而工作节点则托管应用负载。
控制平面组件:
Section titled “控制平面组件:”- kube-apiserver: Kubernetes 控制平面的前端。它暴露 Kubernetes API,用户、管理工具和其他集群组件都通过此 API 进行交互。
- etcd: 一个一致且高可用的键值存储,用作 Kubernetes 所有集群数据(状态、配置等)的后备存储。
- kube-scheduler: 监控新创建的、尚未分配节点的 Pods(Kubernetes 中最小的可部署单元,通常包含一个或多个容器),并根据资源需求、策略等为其选择一个运行节点。
- kube-controller-manager: 运行控制器进程,这些进程调节集群的状态。示例包括 Node 控制器(处理节点故障)、Replication 控制器(维护正确数量的 Pods)等。
- cloud-controller-manager (可选): 与底层云提供商的 API 进行交互(例如,用于管理负载均衡器或存储)。
工作节点组件:
Section titled “工作节点组件:”- kubelet: 运行在每个工作节点上的代理。它确保 PodSpecs(由 API 服务器提供)中描述的容器正在运行且健康。
- kube-proxy: 运行在每个节点上的网络代理,维护网络规则并启用从集群内部或外部的网络会话到 Pods 的网络通信。
- 容器运行时 (Container Runtime): 负责运行容器的软件。Docker 是一个流行的选择,但 Kubernetes 也支持其他运行时,如 containerd 和 CRI-O。
关键 Kubernetes 概念 (简要介绍)
Section titled “关键 Kubernetes 概念 (简要介绍)”- Pods: 最小的可部署单元,代表集群中运行进程的单一实例。Pods 包含一个或多个容器(如 Docker 容器),这些容器共享存储和网络资源。
- Services (服务): 一种抽象方式,用于将运行在一组 Pods 上的应用暴露为网络服务。为访问 Pods 提供稳定的 IP 地址和 DNS 名称。
- Deployments (部署): 一种声明式方式,用于管理 Pods 和 ReplicaSets(确保指定数量的 Pod 副本正在运行)。处理滚动更新和回滚。
- Namespaces (命名空间): 提供一种在多个用户或团队之间划分集群资源的方式。
Kubernetes 编排这些组件,为运行通过 Docker 镜像定义的容器化应用提供了弹性、可伸缩的平台。