码迷,mamicode.com
首页 > Web开发 > 详细

Kubernetes 主要功能

时间:2019-06-15 17:13:11      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:ip访问   宕机   rbac   cluster   namespace   请求   其他   二层   bind   

Kubernetes 主要功能

1、数据卷

??Pod中容器之间共享数据,可以使用数据卷。

2、应用程序健康检查

??容器内服务可能进程堵塞无法处理请求,可以设置监控检查策略保证应用健壮性。

3、复制应用程序实例

??控制器维护着Pod副本数量,保证一个Pod或一组同类的Pod数量始终可用。

4、弹性伸缩

??根据设定的指标(CPU利用率)自动缩放Pod副本数。

5、服务发现

??使用环境变量或DNS服务插件保证容器中程序发现Pod入口访问地址。

6、负载均衡

??一组Pod副本分配一个私有的 ClusterIP 地址,负载均衡转发请求到后端容器。在集群内部其他Pod可通过这个ClusterIP访问应用。

7、滚动更新

??更新服务不中断,一次更新一个Pod,而不是同时删除整个服务。

8、服务编排

??通过文件描述部署服务,使得应用程序部署变得更高效。

9、资源监控

??Node节点组件集成cAdvisor资源收集工具,可通过Heapster汇总整个集群节点资源数据,然后存储到InfluxDB时序数据库,再由Grafana展示。

10、提供认证和授权

??支持属性访问控制(ABAC)、角色访问控制(RBAC)认证授权策略。

二、Kubernetes 基本对象概念(资源对象)

1、基本对象:

1、Pod

??Pod是最小部署单元,一个Pod有一个或多个容器组成,Pod中容器共享存储和网络,在同一台Docker主机上运行。

2、Service

??Service 一个应用服务抽象,定义了Pod逻辑集合和访问这个Pod集合的策略。

??Service代理Pod集合对外表现是为一个访问入口,分配一个集群IP地址,来自这个IP的请求将负载均衡转发后端Pod中的容器。

??Service通过LableSelector选择一组Pod提供服务。

? 一个 pod 打多个标签

? 一个标签可以打给多pod

3、Volume

??数据卷,共享Pod中容器使用的数据。

4、Namespace

??命名空间将对象逻辑上分配到不同Namespace,可以是不同的项目、用户等区分管理,并设定控制策略,从而实现多租户。

??命名空间也称为虚拟集群。

5、Lable

??标签用于区分对象(比如 Pod、Service),键/值对存在;每个对象可以有多个标签,通过标签关联对象。

2、Kubernetes 基于基本对象更高层次抽象

1、ReplicaSet

??下一代ReplicationController。确保任何给定时间指定的Pod副本数量,并提供声明式更新等功能。

??RC与RS唯一区别就是lableselector支持不同,RS支持新的基于集合的标签,RC仅支持基于等式的标签。

2、Deployment

??Deployment是一个更高层次的API对象,它管理ReplicaSets和Pod,并提供声明式更新等功能。

??官方建议使用Deployment管理ReplicaSets,而不是直接使用ReplicaSets,这就意味着可能永远不需要直接操作ReplicaSet对象。

3、StatefulSet

??StatefulSet适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署、扩展、删除和滚动更新。

4、DaemonSet

??demonSet确保所有(或一些)节点运行同一个Pod。当节点加入Kubernetes集群中,Pod会被调度到该节点上运行,当节点从集群中移除时,DaemonSet的Pod会被删除。删除DaemonSet会清理它所有创建的Pod。

5、Job

??一次性任务,运行完成后Pod销毁,不再重新启动新容器。还可以任务定时运行。

3、Kubernetes 资源对象的理解和定义

1、Pod

Kubernetes为每个Pod都分配了唯一的IP地址,称之为Pod IP,一个Pod里的多个容器共享Pod IP地址。Kubernetes要求底层网络支持集群内任意两个Pod之间的TCP/IP直接通信,这通常采用虚拟二层网络技术来实现,例如Flannel、Open vSwitch等。因此,在Kubernetes里,一个Pod里的容器与另外主机上的Pod容器能够直接通信。
Pod有两种类型:普通的Pod和静态Pod(Static Pod),静态Pod不存放在etcd存储里,而是存放在某个具体的Node上的一个具体文件中,并且只在此Node上启动运行。普通的Pod一旦被创建,就会被存储到etcd中,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定(Binding),该Node上的kubelet进程会将其实例化成一组相关的Docker容器并启动起来。当Pod里的某个容器停止时,Kubernetes会自动检测到这个问题并且重新启动这个Pod(重启Pod里的所有容器);如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其他节点上运行。

Kubernetes 主要功能

标签:ip访问   宕机   rbac   cluster   namespace   请求   其他   二层   bind   

原文地址:https://blog.51cto.com/14285333/2409334

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!