K8s从入门到精通(一):概述和特点

K8S的概述和特点

概述

  • K8S是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过K8S能够进行应用的自动化部署和扩缩容。在K8S中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。K8S积累了作为Google生产环境运行工作负载15年的经验,并吸收了来自于社区的最佳想法和实践。

特点

自动装箱

  • 基于容器对应用运行环境的资源配置去自动部署应用容器

自我修复(自愈能力)

  • 当容器运行失败时,会对容器进行重启

  • 当所部署的Node节点有问题时,会对容器进行重新部署和重新调度

  • 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务

水平扩展

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

服务发现

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

滚动更新

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

版本回退

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

**和配置管理

  • 在不需要重新构建镜像的情况下,可以部署和更新**以及应用配置,类似热部署

存储编排

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

K8S架构组件

img

Master node(Master节点)

Api Server

  • 集群统一入口,提供restful方式接口进行操作,交给etcd存储

scheduler

  • 节点调度,选择Worker node进行应用部署

controller-manager

  • 处理集群中常规后台任务,一个资源对应一个控制器,比如:订单管理对应一个订单管理的控制器,购物车对应购物车的控制器

etcd

  • 存储系统,用于保存集群相关的数据

Worker node(工作节点)

kubelet

  • master派到woker node的代表,管理本机容器

kube-proxy

  • 提供网络代理、负载均衡等操作

k8S的核心概念

Pod

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

Controller

  • 确保预期的pod副本数量
  • 进行无状态应用部署(无状态指没有任何约束条件,可以直接部署)
  • 进行有状态的应用部署(有状态指具有一定的约束条件,比如应用需要固定的ip端口)
  • 确保所有的node运行同一个pod
  • 一次性任务和定时任务

Service

  • 进行有状态的应用部署(有状态指具有一定的约束条件,比如应用需要固定的ip端口)
  • 确保所有的node运行同一个pod
  • 一次性任务和定时任务

Service

  • 定义一组pod的访问规则