kubernetes概述

  • kubernetes是Google在2014年开源的一个容器集群管理系统,简称k8s;
  • k8s用于容器化应用程序的部署,扩展和管理;
  • k8s提供了容器编排、资源调度、弹性伸缩、部署管理、服务发现等一系列功能;
  • k8s官方网址 https://www.kubernetes.io

kubernetes特性

  • 自我修复
    在节点故障时,重启失败的容器,替换以及重新部署,保证预期的副本数;杀掉健康检查失败的容器,并且在未准备好时不会处理客户端请求,保证线上服务不中断;
  • 弹性伸缩
    使用命令、UI或基于CPU使用情况快速扩容或缩容应用程序,保证应用业务的高可用性,业务低峰时回收资源;
  • 自动部署和回滚
    k8s采用滚动更新策略更新服务,一次更新一个pod,而不是同时删除全部pod,实行业务平滑部署,部署过程中服务不中断;
  • 服务发现和负载均衡
    k8s为多个容器提供提供一个统一访问入口(内部ip地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需关注容器ip问题;
  • 机密和配置管理
    管理机密数据和应用配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性,还可以将一些常用配置存储在k8s中,方便应用程序使用;
  • 存储编排
    挂在外部存储系统,无论是本地存储、公有云,还是网络存储,都作为集群资源的一部分使用,提高存储灵活性;
  • 批处理
    提供一次性任务、定时任务,满足批量数据处理和分析的场景。

kubernetes集群架构及组件

k8s国内仓库 k8s官方_服务器


- master组件

kube-apiserver

kubernetes API,集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象的增删改查和监听操作都交给apiserver处理后在提交给etcd存储;

kube-controller-manager

处理集群中常规后台任务,一个资源对应一个控制器,而controller-manager就是负责管理这些控制器的;

kube-scheduler

根据调度算法为新创建的pod选择一个node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上;

etcd

分布式键值存储系统,用于保存集群状态数据,比如pod、service等对象信息。

  • node组件
    kubelet
    kubelet是master在node节点上的agnet,管理本机运行容器的生命周期,比如创建容器、pod挂载数据卷、下载secret、获取容器和节点工作状态等工作,kubelet将每个pod转换成一组容器;
    kube-proxy
    在node节点实现pod网络代理,维护网络规则和四层负载均衡工作。
  • docker或rocket
    容器引擎,运行容器。

kubernetes核心概念

  • pod
    最小部署单元;
    一组容器的集合;
    一个pod中的容器共享网络命名空间;
    pod是短暂的。
  • controllers
    ReplicaSet: 确保预期的副本数;
    Deployment:无状态应用部署;
    StatefulSet: 有状态应用部署;
    DaemonSet:确保所有node运行同一个pod;
    Job:一次性任务;
    Cronjob:定时任务。
  • service
    防止pod失联;
    定义一组pod的访问策略。
  • label
    标签,附加到某个资源上,用于关联对象、查询和筛选。
  • namespace
    命名空间,将对象在逻辑上进行隔离。