JohnShen's Blog.

Kubernetes 入门笔记

字数统计: 1.3k阅读时长: 4 min
2021/03/15 Share

Kubernetes

一个用于自动化部署、扩容和管理容器应用的开源系统;它将一个分布式软件的一组容器打包成一个个更容易管理和发现的逻辑单元。

它最开始由 Google 工程师创立,深受公司内部 Borg 和 Omega 项目的影响,目前是 CNCF 的项目。

主要功能:

  • 自动装箱:基于容器对应用运行环境的资源配置要求自动部署应用容器

  • 自我修复:当容器失败时,会对容器进行重启;当所部署的Node 节点有问题时,会对容器进行重新部署和重新调度;当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务

  • 水平扩展:通过简单的命令、用户UI 界面或基于CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁

  • 服务发现:用户不需使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和负载均衡

  • 滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新

  • 版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退

  • 密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。

  • 存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务

  • 批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景

Kubernetes 集群架构组件

客户端通过 RESTful 接口或者直接使用 kubectl 与 Kubernetes 集群进行通信,这两者在实际上并没有太多的区别,后者也只是对 Kubernetes 提供的 RESTful API 进行封装并提供出来。

每一个 Kubernetes 集群都由一组 Master 节点和一系列的 Worker (Node) 节点组成,其中 Master 节点主要负责存储集群的状态并为 Kubernetes 对象分配和调度资源。

Master

API Server:

负责处理来自用户的请求,其主要作用就是对外提供 RESTful 的接口,包括用于查看集群状态的读请求以及改变集群状态的写请求,也是唯一一个与 etcd 集群通信的组件。是 k8s 所有资源的增删改查的唯一入口。

Controller Manager

一个资源对应一个控制器。运行了一系列的控制器进程,这些进程会按照用户的期望状态在后台不断地调节整个集群中的对象,当服务的状态发生了改变,控制器就会发现这个改变并且开始向目标状态迁移。可看作是k8s所有资源的自动化控制中心。

Scheduler

节点调度,为 Kubernetes 中运行的 Pod 选择部署的 Worker 节点,它会根据用户的需要选择最能满足请求的节点来运行 Pod,它会在每次需要调度 Pod 时执行。

etcd

保存 Kubernetes 所有集群数据的后台数据库,是兼具一致性和高可用性的键值数据库。

Worker (Node)

kubelet

是一个节点上的主要服务,它周期性地从 API Server 接受新的或者修改的 Pod 规范并且保证节点上的 Pod 和其中容器的正常运行,负责 Pod 对应的容器的创建、启停等任务,该节点会与 Master 节点密切协作,发送宿主机的健康状况。

kube-proxy

负责宿主机的子网管理,同时也能将服务暴露给外部,实施负载均衡,其原理就是在多个隔离的网络中把请求转发给正确的 Pod 或者容器。

Kubernetes 核心概念

Pod

Pod 是 Kubernetes 中最基本的概念,它也是 Kubernetes 对象模型中可以创建或者部署的最小并且最简单的单元。

它将应用的容器、存储资源以及独立的网络 IP 地址等资源打包到了一起,表示一个最小的部署单元,但是每一个 Pod 中的运行的容器可能不止一个,这是因为 Pod 最开始设计时就能够在多个进程之间进行协调,构建一个高内聚的服务单元,这些容器能够共享存储和网络,非常方便地进行通信。

  • 最小部署单元
  • 一组容器的集合
  • 共享网络
  • 生命周期是短暂的

Controller

用于创建和管理 Pod 的实例,能够在集群的层级提供复制、发布以及健康检查的功能,这些控制器其实都运行在 Kubernetes 集群的主节点上。

  • 确保预期的Pod副本数量

  • 实施无状态应用部署和有状态应用部署

Service

定义一组pod的访问规则。可类比微服务架构中的一个微服务。

通过Service统一入口进行访问,由Controller创建Pod进行部署。

CATALOG
  1. 1. Kubernetes 集群架构组件
    1. 1.1. Master
      1. 1.1.1. API Server:
      2. 1.1.2. Controller Manager
      3. 1.1.3. Scheduler
      4. 1.1.4. etcd
    2. 1.2. Worker (Node)
      1. 1.2.1. kubelet
      2. 1.2.2. kube-proxy
  2. 2. Kubernetes 核心概念
    1. 2.1. Pod
    2. 2.2. Controller
    3. 2.3. Service