Kubernetes (K8S) 是云技术的核心部分,也是构建云原生的基础了解有关@mikechen 的更多信息。
本文收录于mikechen的30万+字原文《阿里架构师进阶专题合集》。
K8S
K8S(Kubernetes 的缩写)是由Google 开发的容器编排平台,目前由云原生计算基金会(CNCF)维护。
K8S主要解决四个要点:
1. 容器编排
Docker解决了容器部署的问题。容器部署涉及容器编排。
K8S 是一个强大而灵活的容器编排平台,允许用户轻松部署、扩展和管理容器化应用程序。
2.容器管理
K8S可以管理多个容器化应用,并调度和管理容器实例的生命周期,包括创建、启动、监控、重启和销毁。
3、自动部署
K8S可以自动部署和扩展容器化应用程序。
此外,K8S还可以根据您的应用程序的负载需求自动扩展容器实例的数量,确保您的应用程序能够适应不断变化的负载需求。
4.安全可用
K8S具有强大的高可用性和容错能力,在节点故障或容器故障时,通过自动重新调度容器实例来保证应用程序的可用性。
K8S架构
K8S架构(如下图所示):
K8S主要包含两个主要组件:Master Node和Child Node。
主组件
master组件是K8S控制平面的核心部分,负责管理整个集群的状态和配置,类似于人《大脑》。
主组件通常运行在单独的节点上,以确保高可用性和可靠性。
1.kube-api服务器
kube-apiserver:这是Kubernetes 集群的前端接口,是所有组件、用户和集群进行通信的单一入口点。
kube-apiserver 提供RESTful API 接口,用于管理集群状态、配置、操作等。
此外,kube-apiserver 还可以通过身份验证、授权和访问控制来保护和管理API 访问权限。
2.etcd
etcd 是一个分布式、一致的键值存储数据库,类似于Redis,具有键值组件。
etcd 主要用于存储集群配置信息、状态和元数据。此信息存储在etcd 中。
3.kube调度器
kube-scheduler:Kubernetes 中的调度组件,负责将新创建的Pod 调度到集群中的节点,同时考虑节点资源可用性和负载。
4.kube-控制器-管理器
Kubernetes Controller Manager 包含多个控制器,负责监控集群的状态,并根据预设的所需状态实现集群的自我修复和自动操作。
常见的控制器包括ReplicaSet控制器、Deployment控制器、StatefulSet控制器等,如下图所示。
这些控制器主要管理Pod 和其他资源的生命周期,使它们能够按照用户期望的方式运行和管理。
2. 节点组件
Node 节点,如《四肢》,是Kubernetes 集群的工作节点,就像K8S 的肢体,执行master 的操作指令。
主要分为以下几个部分:
Kubelet:Kubelet负责管理节点上的Pod和容器,与Master通信,根据Master的指令创建、启动、监控和终止Pod。 kube-proxy:kube-proxy负责为Kubernetes Service实现负载均衡和代理转发,维护网络规则、iptables规则等。容器运行时:负责管理和运行容器,例如Docker、containerd.以及其他可以用来运行的容器。 3. 网络组件
Pod 网络:Pod 网络插件为Pod 分配IP 地址,并提供Pod 之间以及Pod 与外部网络之间的网络通信。
集群网络:集群网络组件负责为集群中的节点分配IP地址并提供节点之间的通信。
K8S和Docker的关系
Docker 和Kubernetes 是分别解决容器化应用和容器化编排的两种不同技术。
两者之间的关系类似于操作系统与应用场景之间的关系,两者主要是配合使用的。
Docker 是一个开源容器化平台,用于创建、打包和运行容器化应用程序。
Docker主要提供容器构建、镜像管理、容器执行、容器存储等功能,适合构建和部署单容器应用。
K8S 是一个容器编排平台,用于自动部署、扩展和管理容器化应用程序。
K8S支持Docker、containerd、cri-o等多种容器运行环境。所以Docker只是K8S中的一种容器。
K8S 并不依赖于Docker,但作为最流行、使用最广泛的容器运行环境,Docker 通常被认为是K8S 的默认容器。
K8S总结
也就是说,K8S提供容器编排和集群管理能力,Docker提供构建、打包和运行容器化应用程序的能力。将两者结合起来创建一个云原生系统。
本文收录于mikechen的30万+字原文《阿里架构师进阶专题合集》。
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83497.html