【完整版Kubernetes(K8S)入门系列三】K8S核心概念

一、服务分类

  • 无状态服务

不会对本地环境产生任何依赖,例如Nginx、Apache

优点:对客户端透明,无依赖关系,可用高效实现扩容、迁移

缺点:不能存储数据,需要额外的数据服务支撑

  • 有状态服务

会对本地环境产生依赖,例如需要存储数据到本地磁盘,MySQL、Redis等

优点:可以独立存储数据,实现数据管理

缺点:集群环境下需要实现主从、数据同步、备份、水平扩容复杂

二、资源和对象

资源

        Kubernetes中所有内动都被抽象为“资源”,如Pod、Service、Node等都是资源。

        资源类别很多种,kubectl可以通过配置文件来创建对象,配置文件更像是描述对象属性的文件,配置文件格式可以是json或者yaml,常用yaml。

对象

        是资源的实例,是持久化的实体。如某个具体的Pod、某个具体的Node。k8s使用这些尸体去表示整个集群的状态。

          对象的创建、删除、修改都是通过“Kubernetes API”,也就是apiserver组件提供的API接口。

资源的分类

        元数据型、集群级、命名空间级。

 1.元数据类型:(以下列的只是常用的,不是只有以下选项)

  • Horizontal Pod Autoscaler(HPA)

Pod自动扩容,可以根据CPU使用率或自定义指标(metrics)自动对Pod进行扩/缩容。

  • PodTemplate

是关于Pod的定义,但是被包含在其他的对象中(例如Deployment、StatefulSet、DaemonSet等控制器)。控制器通过Pod Template信息来创建Pod。

  • LimitRange

可以对集群内Request和Limits的配置做一个全局的统一的限制,相当于批量设置了某一个范围内(某个命名空间)的Pod的资源使用限制。

2.集群级:(以下列的只是常用的,不是只有以下选项)

  • Namespace
  • Node
  • ClusterRole
  • ClusterRoleBinding

3. 命名空间级:(以下列的只是常用的,不是只有以下选项)

3.1 工作负载型:Pod

Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。一组容器的集合。成员容器间共享网络,能够进行数据共享和通信。其生命周期是短暂的。

控制器:Controller

        通过它来实现对pod的管理,控制Pod的具体状态和行为。确保所有的容器运行在同一个Pod上。控制器包含:ReplicationController、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob

3.1.1 ReplicationController(RC)

帮助我们动态更新Pod的副本数,实现动态扩容、缩容

3.1.2 ReplicaSet(RS)

帮助我们动态更新Pod的副本数,在ReplicationController的基础上加入了Lable和selector属性。可以通过selector来选择对哪些Pod生效。

3.1.3 Deployment(生产环境中实际用Deployment部署,而不用RS、RC)

Deployment针对RS的更高层次的封装,提供了更丰富的部署相关功能。

新增的功能:

  • 创建Replica Set / Pod
  • 滚动升级/回滚
  • 平滑扩容和缩容
  • 暂停与恢复Deployment

3.1.4 StatefulSet(适用有状态服务)

主要特点:

  1. 稳定的持久化存储
  2. 稳定的网络标识
  3. 有序部署、有序扩展
  4. 有序收缩、有序删除

组成: Headless Service 、VolumeClaimTemplate

Headless Service:对于有状态服务的DNS管理

VolumnClaimTemplate:用于创建持久化卷创建模板

注意事项:

  1. kubernetes v1.5版本以上才支持
  2. 所有Pod的Volume必须使用PersistentVolumn或者是管理员事先创建好
  3. 为了保证数据安全,删除StatefulSet时不会删除Volume
  4. StatefulSet需要一个Headless Service来定义DNS domain,需要在StatefulSet之前创建好
3.1.5 DaemonSet

为每一个匹配的Node都部署一个守护进程,DaemonSet保证在每个Node上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用。典型的应用包括:

  1. 日志收集,比如fluentd,logstatsh等
  2. 系统监控,比如Prometheus Node Exporter,Collectd等
  3. 系统程序,比如kube-proxy,kube-dns,glusterd,ceph等

3.1.6 Job

一次性运行的任务,运行完成后Pod销毁,不再重新启动容器

3.1.7 CronJob

是在Job基础上加上了定时功能

3.2  Service 与Ingress 服务发现与负载均衡

 

Serivce:

        实现k8s集群内部的网络调用、负载均衡。定义一组pod的访问规则,主要是解决pod的动态变化,提供统一的访问入口:

1、防止pod失联,准备找到提供同一服务的pod(服务发现)

2、定义一组Pod的访问策略(负载均衡)

Ingress:

        实现将k8s内部服务暴露给外网访问的服务。通过Ingress-nginx 实现反向代理、负载均衡。

3.3  Volume 存储

        数据卷,共享Pod中容器使用的数据,用来存放持久化数据,比如数据库数据。

3.4 CSI

        Container Storage Interface是由Kubernetes、Mesos、Docker等社区联合制定的一个行业标准接口规范,旨在将任意文件系统暴露给容器化应用程序。


                                                                        END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值