k8s 名词认知

简介

k8s 是kubernetes的简称
官网*,比较友好的是有中文版,官网一直是最好的学习地方。
能用上k8s,基本上都是直接上集群Kubernetes 协调一个高可用计算机集群,每个计算机作为独立单元互相连接工作。

一个 Kubernetes 集群包含两种类型的资源:

  • Master 调度整个集群,也称管理节点,但并不等于,要管理集群就要进入这个master节点才能管理,可以通过命令行对远程集群进行管理,这也是运维最常见的操作。
  • Nodes 负责运行应用,其中单个叫node, 是一个虚拟机或者物理机,它在 Kubernetes 集群中充当工作机器的角色 。
image.png

在 Kubernetes 上部署应用时,您告诉 Master 启动应用容器。 Master 就编排容器在集群的 Node 上运行。 Node 使用 Master 暴露的 Kubernetes API 与 Master 通信。终端用户也可以使用 Kubernetes API 与集群交互。

kubernetes 架构

image.png

image.png

词汇表*

官网有很丰富的词汇表。

比较重要的名词,在各大云商的配置里都会出现

  • Deployment
    Deployment 是管理应用副本的 API 对象,通常通过运行没有本地状态的Pods来实现。应用的每个副本就是一个 Pod, 并且这些 Pod 会分散运行在集群的节点上。
  • etcd
    etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
  • ConfigMap
    ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods可以将其用作环境变量、命令行参数或者存储卷中的配置文件。
  • Helm Chart
    Helm Chart 是一组预先配置的 Kubernetes 资源所构成的包,可以使用 Helm 工具对其进行管理。
    Chart 提供了一种可重现的用来创建和共享 Kubernetes 应用的方法。 单个 Chart 可用来部署简单的系统(例如一个 memcached Pod), 也可以用来部署复杂的系统(例如包含 HTTP 服务器、数据库、缓存等组件的完整 Web 应用堆栈)。
  • Ingress
    Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。
    Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。
  • Job
    Job 是需要运行完成的确定性的或批量的任务。Job 创建一个或多个 Pod 对象,并确保指定数量的 Pod 成功终止。 随着各 Pod 成功结束,Job 会跟踪记录成功完成的个数。
  • 初始化时的镜像作用
    • kube-apiserver
      API 服务器是 Kubernetes 控制面的组件, 该组件公开了 Kubernetes API。 API 服务器是 Kubernetes 控制面的前端。Kubernetes API 服务器的主要实现是 kube-apiserver。 kube-apiserver 设计上考虑了水平伸缩,也就是说,它可通过部署多个实例进行伸缩。 你可以运行 kube-apiserver 的多个实例,并在这些实例之间平衡流量。
    • kube-controller-manager
      运行控制器进程的控制平面组件。从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。
    • kube-proxy
      kube-proxy 是集群中每个节点上运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
    • kube-scheduler
      控制平面组件,负责监视新创建的、未指定运行节点(node)的 Pods,选择节点让 Pod 在上面运行。 调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
  • 三个命令行工具的作用
    • Kubeadm用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。 你可以使用 kubeadm 安装控制面和 工作节点 组件。
    • Kubectl亦称作:kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。 你可以使用 kubectl 创建、检视、更新和删除 Kubernetes 对象。
    • Kubelet一个在集群中每个节点(node)上运行的代理。 它保证容器(containers)都 运行在 Pod 中。 kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。 kubelet 不会管理不是由 Kubernetes 创建的容器。
  • Kubernetes API
    Kubernetes API 是通过 RESTful 接口提供 Kubernetes 功能服务并负责集群状态存储的应用程序。 Kubernetes 资源和"意向记录"都是作为 API 对象储存的,并可以通过调用 RESTful 风格的 API 进行修改。 API 允许以声明方式管理配置。 用户可以直接和 Kubernetes API 交互,也可以通过 kubectl 这样的工具进行交互。 核心的 Kubernetes API 是很灵活的,可以扩展以支持定制资源。
  • 可操作资源
    • Node 节点,虚拟机或实体机
    • Podes 原子对象,相当于是容器。一个node下可以有好多pod
    • Replication Controllers 副本控制器一种工作管理多副本应用的负载资源,能够确保特定个数的 Pod 实例处于运行状态。 控制面确保所指定的个数的 Pods 处于运行状态,即使某些 Pod 会失效, 比如被你手动删除或者因为其他错误启动过多 Pod 时。
    • Services 服务,是一组资源的集合,可以由多个不同node上的pod组成
    • Namespace 空间名,作为资源隔离
    • ComponentStatus 组件状态
  • Secret - Secret 用于存储敏感信息,如密码、 OAuth 令牌和 SSH 密钥。 Secret 允许用户对如何使用敏感信息进行更多的控制,并减少信息意外暴露的风险。 默认情况下,Secret 值被编码为 base64 字符串并以非加密的形式存储,但可以配置为 静态加密(Encrypt at rest)。 Pod 通过挂载卷中的文件的方式引用 Secret,或者通过 kubelet 为 pod 拉取镜像时引用。 Secret 非常适合机密数据使用,而 ConfigMaps 适用于非机密数据。

你可能感兴趣的:(k8s 名词认知)