Kubernetes

Kubernetes是Google开源的容器集群管理系统,是Google多年⼤规模容器管理技术Borg的开源版本,主要功能包括:

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

Kubernetes (K8s) 是一个谷歌开源工具,它可以让你管理 Docker 容器。

Dockers是容器化技术。K8S是一套自动化部署工具,可全生命周期管理Dockers容器。

1、Pod

Pod是一组紧密关联的容器集合,支持多个容器在一个Pod中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式完成服务,是Kubernetes调度的基本单位。Pod的设计理念是每个Pod都有一个唯一的IP。

Pod具有如下特征:

    • 包含多个共享IPC、Network和UTC namespace的容器,可直接通过localhost通信
    • 所有Pod内容器都可以访问共享的Volume,可以访问共享数据
    • 优雅终止:Pod删除的时候先给其内的进程发送SIGTERM,等待一段时间(grace period)后才强制停止依然还在运行的进程
    • 特权容器(通过SecurityContext配置)具有改变系统配置的权限(在网络插件中大量应用)
    • 支持三种重启策略(restartPolicy),分别是:Always、OnFailure、Never
    • 支持三种镜像拉取策略(imagePullPolicy),分别是:Always、Never、IfNotPresent
    • 资源限制,Kubernetes通过CGroup限制容器的CPU以及内存等资源,可以设置request以及limit值
    • 健康检查,提供两种健康检查探针,分别是livenessProbe和redinessProbe,前者用于探测容器是否存活,如果探测失败,则根据重启策略进行重启操作,后者用于检查容器状态是否正常,如果检查容器状态不正常,则请求不会到达该Pod
    • Init container在所有容器运行之前执行,常用来初始化配置
    • 容器生命周期钩子函数,用于监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数,支持两种钩子函数:postStart和preStop,前者是在容器启动后执行,后者是在容器停止前执行

2、Namespace

Namespace(命名空间)是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或者用户组。常见的pod、service、replicaSet和deployment等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。

3、Node

Node是Pod真正运行的主机,可以是物理机也可以是虚拟机。Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源。为了管理Pod,每个Node节点上至少需要运行container runtime(Docker)、kubelet和kube-proxy服务。

4、Service

Service是对一组提供相同功能的Pods的抽象,并为他们提供一个统一的入口,借助 Service 应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级。Service通过标签(label)来选取后端Pod,一般配合ReplicaSet或者Deployment来保证后端容器的正常运行。

5、Volume 存储卷

默认情况下容器的数据是非持久化的,容器消亡以后数据也会跟着丢失,所以Docker提供了Volume机制以便将数据持久化存储。Kubernetes提供了更强大的Volume机制和插件,解决了容器数据持久化以及容器间共享数据的问题。

原文地址:https://www.cnblogs.com/KL2016/p/15748962.html