Kubernetes 架构及基础概念

原创 2017年10月12日 20:29:13

一、K8S架构

这里写图片描述

  • K8S 集群组成
    • 分布式存储(Etcd)
    • 控制节点(Master)
    • 工作节点(Node)
  • 只有 apiserver 与存储通信
    • 用户直接访问 apiserver
    • 内部进程,包括 kubelet, controller 均通过 apiserver 访问存储
    • 出于安全考虑
  • 配置管理操作声明式而非命令式

二、基础概念

1、Namespace与ResourceQuota

Namespace

  • 物理集群上的虚拟集群
  • 用户级别的资源限制,用户只需关注 namespace 上的资源情况
  • 默认没有资源限制,需要通过 ResourceQuota 来配额

这里写图片描述

ResourceQuota: Namespace 资源配额

  • 计算资源配额
    • CPU,MEM
  • k8s 元素数量配额

2、Resource

这里写图片描述

3、Label 和 Selector

Label

  • 用于区分资源的 key/value 键值对

  • 资源可以拥有多个 label

这里写图片描述

selector

  • 根据 label 选择对应的资源
  • Equality-based 选择器

    • kubectl get pods -l environment=production,tier=frontend
  • Set-based 选择器

    • kubectl get pods -l ‘environment in (production),tier in (frontend)’

4、Master节点

这里写图片描述

5、Node

这里写图片描述

6、Pod

  • 多个容器的集合
  • 最小调度单位
  • 共享 namespace
    • PID 名字空间(同一 Pod 内的容器能看到其他容器的PID,Docker 容器暂不支持)
    • 网络名字空间(共享 IP 和 localhost)
    • IPC 名字空间(能够使用 SystemV IPC 或者POSIX 消息队列进行通信)
    • UTS 名字空间(共享同一个主机名)
  • Pod 的网络原则:一 Pod 一 IP
  • 防止端口冲突
  • 方便服务注册

这里写图片描述

7、Service

  • 一个唯一指定的名字
  • 一个虚拟 IP 和端口号
  • 服务类型
    • ClusterIP(default)
    • Nodeport
    • LoadBalancer
  • 服务发现
    • 环境变量
    • DNS

这里写图片描述

8、ReplicationController

ReplicationController(简称RC)是确保用户定义的Pod副本数保持不变。
这里写图片描述

RC 替代方法:
ReplicaSet
ReplicaSet是支持新的set-based选择器要求的下一代ReplicationController 。
Deployment(推荐)

9、StatefulSets

Pod调度运行时,如果应用不需要任何稳定的标示、有序的部署、删除和扩展,则应该使用一组无状态副本的控制器来部署应用,例如 Deployment 或 ReplicaSet更适合无状态服务需求。

10、Volumes

  • Pod 生命周期内一直可用
  • Pod 内容器共享
  • 当前支持的类型
    • emptyDir:Pod 与 Node 绑定/解绑时创建/删除
    • hostPath:挂载 Node 上的目录
    • gcePersistentDisk
    • nfs

这里写图片描述

Volumes(存储卷)是Pod中能够被多个容器访问的共享目录。Kubernetes的Volumes概念与Docker的Volumes比较类似,但并不完全相同。Kubernetes中的Volumes与Pod生命周期相同,而不与容器的生命周期相关。当容器终止或者重启时,Volumes中的数据也不会丢失。另外,Kubernetes支持多种类型的Volumes,并且一个Pod可以同时使用任意多个Volumes。

emptyDir:一个EmptyDir Volume是在Pod分配到Node时创建的。从它的名称就可以看出,它的初始内容为空。同一个Pod中所有容器可以读和写EmptyDir中的相同文件。当Pod从Node上移除时,EmptyDir中的数据也会永久删除。
EmptyDir的一些用途如下:
- 临时空间,例如用于某些应用程序运行时所需的临时目录,且无需永久保留;
- 长时间任务的中间过程CheckPoint临时保存目录;
- 一个容器需要从另一个容器中获取数据的目录(多容器共享目录)。

hostPath:在Pod上挂载宿主机上的文件或目录。
hostPath通常可以用于:

  • 容器应用程序生成的日志文件需要永久保存,可以使用宿主机的高速文件系统进行存储;
  • 需要访问宿主机上Docker引擎内部数据结构的容器应用,可以通过定义hostPath为宿主机/var/lib/docker目录使得容器内部应用可以直接访问Docker的文件系统。
  • 在不同Node上具有相同配置的Pod可能会因为宿主机上的目录和文件不同而导致对Volume上目录和文件的访问结果不一致;

11、ConfigMap

  • 应用镜像和配置分离
  • 数据类型为键值对
  • Pod 使用 ConfigMap 的三种方式
    • 命令行参数
    • 环境变量
    • 数据卷文件

12、Deployment

  • 确保任意时间都有指定数量的Pod “副本”在运行
  • 通过 Pod 选择器筛选出对应的Pod 实例并实时监控其状态和数量
  • 提供 Pod 和 Replica Set 的声明式更新
  • 把部署,滚动更新和回滚进行了自动化
  • 创建 Deployment
    • kubectl create -f docs/user-guide/nginx-deployment.yaml –record
  • 更新 Deployment
    • kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
  • 查看 Deployment 的修订版本
    • kubectl rollout history deployment/nginx-deployment

Deployment负责创建和更新应用。创建Deployment后,Kubernetes master 会将Deployment创建好的应用实例调度到集群中的各个节点。
应用实例创建完成后,Kubernetes Deployment Controller会持续监视这些实例。如果管理实例的节点被关闭或删除,那么 Deployment Controller将会替换它们,实现自我修复能力。
创建Deployment时,需要为应用程序指定容器镜像以及要运行的副本数,后续可以通过Deployment更新来更改该这些信息。

13、API group

  • 每个 API group 中的资源可以单独的 enable/disable
  • 每个 API group 有不同的版本,单独开发维护

14、PersistentVolume (PV)

  • 集群中的一块网络存储
  • 独立于 Pod 的生命周期
  • 支持的 PV 类型
    • GCEPersistentDisk
    • AWSElasticBlockStore
    • NFS
    • Cinder
    • iSCSI

本文整理自网络

个人微信公众号:
这里写图片描述

作者:jiankunking 出处:http://blog.csdn.net/jiankunking

版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

Kubernetes总架构图

一、Kubernetes的总架构图   二、Kubernetes各个组件介绍 (一)kube-master[控制节点] master的工作流程图   Kubecfg将特定的请求,比如创建Po...
  • huwh_
  • huwh_
  • 2017年05月07日 10:30
  • 3226

深入浅出 Kubernetes 架构

作者介绍 王渊命,团队协作IM服务Grouk联合创始人及CTO,技术极客,曾任新浪微博架构师、微米技术总监。2015年作为联合创始人创立团队协作IM服务Grouk,长期关注团队协作基础工具和研发...
  • jincm13
  • jincm13
  • 2016年03月14日 14:32
  • 11870

Kubernetes基础概念

Kubernetes基础概念什么是KubernetesKubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容...
  • shenshouer
  • shenshouer
  • 2015年10月12日 14:45
  • 1297

Kubernetes架构简介

Master节点   : api server:提供了集群管理的API接口,成为了集群中各个功能模块之间数据交互和通信的中心枢纽,并且拥有完备的集群安全机制,是整个集群的核心。 Schedule...
  • hanlaipeng11
  • hanlaipeng11
  • 2017年08月28日 13:22
  • 93

高可用Kubernetes集群原理介绍

■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高...
  • horsefoot
  • horsefoot
  • 2016年08月19日 08:28
  • 14790

十分钟带你理解Kubernetes核心概念

十分钟带你理解Kubernetes核心概念
  • linlinv3
  • linlinv3
  • 2016年01月06日 09:57
  • 1043

Spring Cloud + Kubernetes 微服务框架原理和实践

早在半年前,公司开始推行容器化部署方案 AppOS,虽然发布界面过于极客,十分晦涩,不过仔细研究起来真的觉得十分强大,容器化推行后,计算资源(CPU、内存)的利用率可以极大提高,降低服务器数量,从而节...
  • hopeztm
  • hopeztm
  • 2017年12月06日 16:08
  • 565

kubernetes架构及应用部署

kubernetes cluster由master和node组成,节点上运行着若干kubernetes服务。 (1).master节点: master节点是Kubernetes Cluster的大...
  • zongyimin
  • zongyimin
  • 2018年01月15日 16:20
  • 65

kubernetes容器网络接口(CNI) midonet网络插件的设计与实现

CNI只关心容器的网络连接,在容器创建时分配网络资源,并在删除容器时删除分配的资源。因为这个焦点,CNI有广泛的支持,规格易于实现。...
  • ZYQDuron
  • ZYQDuron
  • 2017年03月23日 14:47
  • 1113

Kubernetes的系统架构与设计理念

Kubernetes与云原生应用简介 随着Docker技术的发展和广泛流行,云原生应用和容器调度管理系统也成为IT领域大热的词汇。事实上,云原生应用的思想,在Docker技术火爆之前,已经由云计算技...
  • horsefoot
  • horsefoot
  • 2016年08月16日 15:35
  • 18245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kubernetes 架构及基础概念
举报原因:
原因补充:

(最多只允许输入30个字)