什么是 k8s(Kubernetes)?
K8s是一个容器编排系统。它用于容器部署和管理。其设计很大程度上受到Google内部系统Borg的影响。
k8s 集群由一组称为节点的工作机器组成,它们运行容器化应用程序。每个集群至少有一个工作节点。
工作节点托管作为应用程序工作负载组件的 Pod。控制平面管理集群中的工作节点和 Pod。在生产环境中,控制平面通常跨多台计算机运行,集群通常运行多个节点,提供容错和高可用性。
- Control Plane 组件
- API Server
API Server与 k8s 集群中的所有组件进行通信。Pod 上的所有操作都是通过与 API 服务器通信来执行的。
- Scheduler
Scheduler监视 Pod 工作负载并在新创建的 Pod 上分配负载。
- Controller Manager
Controller Manager运行控制器,包括节点控制器、作业控制器、EndpointSlice 控制器和 ServiceAccount 控制器。
- Etcd
etcd 是一个键值存储,用作 Kubernetes 所有集群数据的后备存储。
- Nodes节点
- Pods
Pod 是一组容器,是 k8s 管理的最小单元。Pod 具有应用于 Pod 内每个容器的单个 IP 地址。
- Kubelet
在集群中的每个节点上运行的代理。它确保容器在 Pod 中运行。
- Kube Proxy
Kube-proxy 是一个在集群中每个节点上运行的网络代理。它将从服务进入节点的流量路由。它将工作请求转发到正确的容器。
Docker 与 Kubernetes。我们应该使用哪一个?
什么是 Docker?
Docker 是一个开源平台,允许您在隔离的容器中打包、分发和运行应用程序。它专注于容器化,提供封装应用程序及其依赖项的轻量级环境。
什么是 Kubernetes?
Kubernetes,通常称为 K8s,是一个开源容器编排平台。它提供了一个框架,用于跨节点集群自动部署、扩展和管理容器化应用程序。
两者有何不同?
Docker:Docker 在单个操作系统主机上的单个容器级别上运行。
必须手动管理每个主机,并且为多个相关容器设置网络、安全策略和存储可能很复杂。
Kubernetes:Kubernetes 在集群级别运行。它管理跨多个主机的多个容器化应用程序,为负载平衡、扩展和确保应用程序的所需状态等任务提供自动化。
简而言之,Docker 专注于容器化和在单个主机上运行容器,而 Kubernetes 专注于跨主机集群大规模管理和编排容器。
Docker 是如何工作的?
下图显示了 Docker 的架构以及当我们运行“docker build”、“docker pull”和“docker run”时它是如何工作的。
Docker 架构中有 3 个组件:
- Docker client
Docker 客户端与 Docker 守护进程对话。
- Docker host
Docker 守护进程侦听 Docker API 请求并管理 Docker 对象,例如映像、容器、网络和卷。
- Docker registry
Docker 注册表存储 Docker 镜像。Docker Hub 是一个任何人都可以使用的公共注册表。
我们以“docker run”命令为例。
- Docker 从注册表中提取镜像。
- Docker 创建一个新容器。
- Docker 为容器分配一个读写文件系统。
- Docker 创建一个网络接口来将容器连接到默认网络。
- Docker 启动容器。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-docker-k8s/7008.html