kubernetes(1)基本概念:概念及架构、特性

概述

kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写

Kubernetes 提供了应用部署,规划,更新,维护的一种机制

传统的应用部署方式是通过插件或脚本来安装应用。

  • 缺点:是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定

新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源

  • 做集群的话,docker不是很方便,k8s便可以解决docker里面很多不方便的地方
  • k8s是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。简单来说,它是一个开源的容器化分集群管理系统

在 Kubernetes 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理

总结:

  1. 目标:让部署容器化应用更加简洁高效
  2. 使用k8s进行容器化应用部署
  3. 使用k8s利于应用扩展

优点

  1. 自动装箱:
    基于容器对应用运行环境的资源配置要求,自动部署应用容器;这些过程便不需要手动去设置

  2. 自我修复(自愈能力)
    当容器失败时,会对容器进行重启;
    当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度;
    当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务(当一个节点里面所有的服务都启动后(包括服务和应用等启动后),其才对外提供服务)

  3. 水平扩展
    通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁;(高峰期的时候让其副本数量增加,低谷期的时候,让副本数量减少)

  4. 服务发现(负载均衡)
    用户不需使用额外的服务发现机制,就能够基于Kubernetes 自身能力实现服务发现和负载均衡
    对外提供一个统一的入口,去完成节点的调度和负载均衡的功能

  5. 滚动更新
    可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
    当检测没有问题才提供服务

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

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

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

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

集群架构组件组成

简单的架构图如下:
在这里插入图片描述
如果想要做一个k8s的集群,里面必须包含两部分

  1. master:主控节点,主要做管理操作
    在这里插入图片描述

  2. node:工作节点,主要做具体的一些事情
    在这里插入图片描述

在搭建一个k8s时,便需要去手动部署这些组件

master

在这里插入图片描述

里面包含三部分

  1. ApiServer
  2. controller-manager
  3. scheduler
  4. etcd

ApiServer

apiServer:

  1. 可以理解为一个统一的入口,是一个协调者,通过它将请求分发到不同的组件去
  2. 供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
  3. 其是以restful的请求方式,提供的一些操作,最后将这些操作交给etcd进行存储

etcd 保存了整个集群的状态

scheduler

进行节点调度,将一个应用在哪一个node节点上进行部署(选择node节点应用调度

负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;

controller-manager

进行集中的控制管理,处理集群中常规的后台任务,一个资源对应一个控制器

负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

etcd

etcd 保存了整个集群的状态

存储系统,用于报错集群中相关的一些数据

node

在这里插入图片描述

里面主要包含两部分

  1. kubelet
  2. kube-proxy

里面还有许多的docker , pod等

kubelet

负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;

master派到node节点的代表,管理本机容器

kube-proxy

负责为 Service 提供 cluster 内部的服务发现和负载均衡

实现pod的网络代理,实现负载均衡等操作

k8s核心概念

通过service统一入口进行访问,过后由controller去创建pod进行部署

Pod

是k8s里面最小的单元

一组容器的集合

一个pod里面的所有容器是共享网络的

生命周期是短暂的,服务器重启/部署后,该pod就变化了

controller

使用controller去创建/部署pod

可以确保预期的pod副本数量(一般是内置的)

在k8s里面部署一个容器/应用,有两种部署情况

  1. 无状态应用部署
    有两个节点,两个节点中都有多个容器和多个副本,一个节点挂掉了,该节点里面的内容可以直接拿到另一个节点里面去使用,便称为无状态(之前没有任何约定,拿过来便可以直接使用
  2. 有状态应用部署
    需要有特定的条件才能使用

可以确保所有的node去运行同一个pod

支持一次性任务和定时任务

service

统一的入口

定义一组poid的访问规则


版权声明:本文为yyuggjggg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。