Kubernetes

目录

一、Kubernetes简介

1、概念

2、主要特性:

二、Kubernetes 基本概念

架构:

1.核心组件

2.除了核心组件,还有一些推荐的 Add-ons:

3.分层架构


一、Kubernetes简介

1、概念

Kubernetes(简称k8s)是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

2、主要特性:

  • 基于容器的应用部署、维护和滚动升级
  • 负载均衡和服务发现
  • 跨机器和跨地区的集群调度
  • 自动伸缩
  • 无状态服务和有状态服务
  • 广泛的 Volume 支持
  • 插件机制保证扩展性
     

二、Kubernetes 基本概念

1、Container

Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用 namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容 器可以很方便的在任何地方运行。

2、Pod

Kubernetes 使用 Pod 来管理容器,每个 Pod 可以包含一个或多个紧密关联的容器。 Pod 是一组紧密关联的容器集合,它们共享 PID、IPC、Network 和 UTS namespace, 是 Kubernetes 调度的基本单位。Pod 内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。

3、Node(负责干活的)

 Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。为了管理 Pod,每个 Node 节点上至少要运行 container runtime(比如 docker 或者 rkt)、 kubelet 和 kube-proxy 服务。

4、Namespace

 Namespace 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为 不同的项目组或用户组。常见的 pods, services, replication controllers 和 deployments 等都是属于某一个 namespace 的(默认是 default),而 node, persistentVolumes 等则 不属于任何 namespace。

5、Service

 Service 是应用服务的抽象,通过 labels 为应用提供负载均衡和服务发现。匹配 labels 的 Pod IP 和端口列表组成 endpoints,由 kube-proxy 负责将服务 IP 负载均衡到这些 endpoints 上。 每个 Service 都会自动分配一个 cluster IP(仅在集群内部可访问的虚拟地址)和 DNS 名,其他容器可以通过该地址或 DNS 来访问服务,而不需要了解后端容器的运行。

6、Label

 Label 是识别 Kubernetes 对象的标签,以 key/value 的方式附加到对象上(key 最长不 能超过 63 字节,value 可以为空,也可以是不超过 253 字节的字符串)。
 Label 不提供唯一性,并且实际上经常是很多对象(如 Pods)都使用相同的 label 来标 志具体的应用。 Label 定义好后其他对象可以使用 Label Selector 来选择一组相同 label 的对象(比如 ReplicaSet 和 Service 用 label 来选择一组 Pod)。
 Label Selector 支持以下几种方式:

等式,如 app=nginx 和 env!=production
集合,如 env in (production, qa)
多个 label(它们之间是 AND 关系),如 app=nginx,env=test

7、Annotations

 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对 象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度 策略等。比如 deployment 使用 annotations 来记录 rolling update 的状态。

架构:

1.核心组件

Kubernetes

 

Kubernetes

 

2.除了核心组件,还有一些推荐的 Add-ons:

  • kube-dns 负责为整个集群提供 DNS 服务
  • Ingress Controller 为服务提供外网入口
  • Heapster 提供资源监控
  • Dashboard 提供
  • GUI Federation 提供跨可用区的集群 Fluentd-elasticsearch 提供集群日志采集、存储与查询

3.分层架构

Kubernetes 设计理念和功能其实就是一个类似 Linux 的分层架构

  • 核心层:Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插 件式应用执行环境
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服 务发现、DNS 解析等)
  • 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动 态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)
  • h3接口层:kubectl 命令行工具、客户端 SDK 以及集群联邦
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范 畴 Kubernetes 外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS 应用、ChatOps 等 Kubernetes 内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的 配置和管理等

 .架构图

 

Kubernetes

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91437 人正在系统学习中

来源:凤箫声动.

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月15日
下一篇 2021年11月15日

相关推荐