k8s-----1、基础知识

k8s基础

  • 1、k8s集群架构组件
    • 1.1 master(主控)节点
    • 1.2 node(工作)节点
    • 1.3 kubernetes主要解决的问题
    • 1.4 声明式API
  • 2、 k8s核心概念
    • 2.1 pod
    • 2.2 Controller
    • 2.3 Service

1、k8s集群架构组件

k8s-----1、基础知识_第1张图片

1.1 master(主控)节点

  • Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成。负责API服务的kube-apiserver,负责调度的kube-scheduler,负责容器编排的kube-controller-manager。整个集群的持久化数据,是由apiserver处理后保存到etcd中的。
  • API server(各组件的协调者) ,集群统一入口,以restful方式进行请求,然后交给etcd存储。
  • Scheduler,进行节点调度。选择node节点进行应用部署。
  • Controller Manger,处理集群中常规后台任务,一个资源对应一个控制器。比如一个订单会对应一个控制器,一个购物车会对应一个。
  • etcd,存储系统。用于保存集群相关的数据。

1.2 node(工作)节点

  • 两个核心组件:kubelet和kubeproxy

  • kubelet组件,可以理解为master派到node的代表。管理当前节点的容器。

  • kube-proxy组件,提供网络代理,负载均衡等操作。

  • node节点核心是kubelet的组件

  • 容器技术接口: CRI(Container Runtime Interface)远程调用接口、CNI(Container Networking Interface)容器配置网络和 CSI(Container Storage Interface)容器持久化存储接口等

  • kubelet 主要负责同容器运行时(比如 Docker 项目)打交道。而这个交互所依赖的,是一个称作 CRI(Container Runtime Interface)的远程调用接口,这个接口定义了容器运行时的各项核心操作,比如:启动一个容器需要的所有参数。

  • 而具体的容器运行时,比如 Docker 项目,则一般通过 OCI 这个容器运行时规范同底层的 Linux 操作系统进行交互,即:把 CRI 请求翻译成对 Linux 操作系统的调用(操作 Linux Namespace 和 Cgroups 等)。

  • 此外,**kubelet 还通过 gRPC 协议同一个叫作 Device Plugin 的插件进行交互。**这个插件,是 Kubernetes 项目用来管理 GPU 等宿主机物理设备的主要组件,也是基于 Kubernetes 项目进行机器学习训练、高性能作业支持等工作必须关注的功能。

1.3 kubernetes主要解决的问题

  • 作业编排、管理、调度
  • k8s功能全景图
    k8s-----1、基础知识_第2张图片
  • 一组相同的pod ,访问需要固定的 IP 地址和端口以负载均衡的方式访问它,于是就有了 Service
  • Secret 的对象,它其实是一个保存在 Etcd 里的键值对数据。这样,你把 Credential (认证)信息以 Secret 的方式存在 Etcd 里,Kubernetes 就会在你指定的 Pod(比如,Web 应用的 Pod)启动时,自动把 Secret 里的数据以 Volume 的方式挂载到容器里。
  • DaemonSet,用来描述每个宿主机上必须且只能运行一个副本的守护进程服务
  • CronJob,则用于描述定时任务
  • Job,用来描述一次性运行的 Pod(比如,大数据任务)

1.4 声明式API

在 Kubernetes 项目中,我们所推崇的使用方法是:
1.首先,通过一个“编排对象”,比如 Pod、Job、CronJob 等,来描述你试图管理的应用;
2.然后,再为它定义一些“服务对象”,比如 Service、Secret、Horizontal Pod Autoscaler(自动水平扩展器)等。这些对象,会负责具体的平台级功能。
这种使用方法,就是所谓的“声明式 API”。这种 API 对应的“编排对象”和“服务对象”,都是 Kubernetes 项目中的 API 对象(API Object)。

2、 k8s核心概念

2.1 pod

  • k8s的最小部署单元。
  • 一个pod可以包含多个容器,相当于一组容器的集合。
  • 一个pod中容器共享网路。
  • 生命周期短暂。

2.2 Controller

  • 确保预期的pod副本数量
  • 有状态和无状态的应用部署。无状态就是随意可以拿来用。有状态就是会存在一定的限制,比如需要依赖于存储或者自身IP要求唯一。
  • 确保所有的node运行同一个Pod。
  • 支持一次性任务和定时任务。

2.3 Service

  • 定义一组pod的访问规则。

你可能感兴趣的:(k8s学习,kubernetes)