写点什么

02 K8S 之基础知识

发布于: 刚刚
02 K8S之基础知识

Kubernetes 是一个跨多主机的容器编排平台,它使用共享网络将多个主机(物理服务器或虚拟机)构建成统一的集群。其中,一个或少量几个主机运行为 Master(主节点),作为控制中心负责管理整个集群系统,余下的所有主机运行为 Worker Node(工作节点),这些工作节点使用本地和外部资源接收请求并以 Pod(容器集)形式运行工作负载。


Master 是集群的网关和中枢,负责诸如为用户和客户端暴露 API、确保各资源对象不断地逼近或符合用户期望的状态、以最优方式调度工作负载,以及编排其他组件之间的通信等任务,它是各类客户端访问集群的唯一入口,肩负 Kubernetes 系统上大多数集中式管控逻辑。


Worker Node 负责接收来自 Master 的工作指令并相应创建或销毁 Pod 对象,以及调整网络规则以合理完成路由和转发流量等任务,是 Kubernetes 集群的工作节点。理论上讲,Node 可以是任何形式的计算设备,负责提供 CPU、内存和存储等计算和存储资源,不过 Master 会统一将其抽象为 Node 对象进行管理


Kubernetes 程序自身更像是构建在底层主机组成的集群之上的“云操作系统”或“云原生应用操作系统”,而容器是运行其上的进程,但 Kubernetes 要通过更高级的抽象 Pod 来运行容器,以便于处理那些具有“超亲密”关系的容器化进程,这些进程必须运行于底层的同一主机之上。


声明式(declarative)编程和命令式(imperative)编程是两种相对的高级编程概念:前者着重于最终结果,如何达成结果则要依赖于给定语言的基础组件能力,程序员只需要指定做什么而非如何去做;后者称为过程式编程更合适,它需要由程序员指定做事情的具体步骤,更注重如何达成结果的过程


Kubernetes 属于典型的 Server-Client 形式的二层架构,在程序级别,Master 主要由 API Server(kube-apiserver)、Controller-Manager(kube-controller-manager)和 Scheduler(kube-scheduler)这 3 个组件,以及一个用于集群状态存储的 etcd 存储服务组成,它们构成整个集群的控制平面;而每个 Node 节点则主要包含 kubelet、kube-proxy 及容器运行时(Docker 是最为常用的实现)3 个组件,它们承载运行各类应用容器。


kubelet 是 Kubernetes 中最重要的组件之一,是运行于每个 Node 之上的“节点代理”服务,负责接收并执行 Master 发来的指令,以及管理当前 Node 上 Pod 对象的容器等任务。它支持从 API Server 以配置清单形式接收 Pod 资源定义,或者从指定的本地目录中加载静态 Pod 配置清单,并通过容器运行时创建、启动和监视容器。


Pod 是一组容器组成的集合并包含这些容器的管理机制,它并未额外定义进程的边界或其他更多抽象,因此真正负责运行容器的依然是底层的容器运行时。


kube-proxy 是 Kubernetes 的核心网络组件,它本质上更像是 Pod 的代理及负载均衡器,负责确保集群中 Node、Service 和 Pod 对象之间的有效通信。


发布于: 刚刚阅读数: 3
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
02 K8S之基础知识