K8S的优势在哪里?

  • 有效的管理集群
  • 支持多种存储
  • 滚动更新、回滚应用
  • 故障自愈
  • 有效的提高服务器资源利用率(高利用率的调度)
  • 账号、密码等敏感信息的有效管理(RBAC)
  • 服务发现和服务治理
  • 声明式系统:异步、可以保存原有应用的源代码或配置信息
  • 对管理范畴的所有对象进行抽象(最大的优势)

K8S如何抽象和定义的

  • 将业务模型化,对象通过api形式发布
  • 控制器模式(除了apiserver和etcd,其余组件都能看作是一个控制器)
  • 每个对象都是互补而且能够组合的
  • API操作复杂度和对象的数量趋近
  • API不能依赖网络的连接状态
  • 尽量避免操作机制依赖全局状态

设计模型

  • TypeMeta:对于对象的基本定义
    • Group:对象的基本分组
    • Kind:对象的基本类型
    • Version:对象的版本(K8S对于对象控制的版本)
  • Metadata
    • Namespace:对于不同应用和对象进行隔离
    • Name
    • Typemeta、Namespace、Name确定对象api的访问路径,路径会保存在Metadata属性的selflink中,具体形式:api/v1/namespaces/default/pods/podname
    • Label:一个对象可以有任意的标签
    • Annotation:对象的属性扩展
    • Finalizer:操作集群外部资源时,对象不会泄露
    • ResourceVersion:当有两个线程访问对象时:如果A对于a对象进行了变更操作,就会产生新的对象;而当B在想对原来的a对象进行变更时,他已经不是原来的a,是新的对象a,变更会失败
  • Spec:用户期望的状态
  • Status:应用目前的状态

常用的K8S对象及其分组

  • 权限管理:RBAC、pod安全策略、网络策略
  • 自动化:HPA
  • 服务发布:Service、Ingress
  • 应用管理:Deployment、ReplicaSet、DaemonSet、StatefulSet、Job、CornJob
  • 核心对象:Node、Pod、PV、PVC、Service、Endpoints、ServiceAccount、ConfigMap、Secret、Namespace、Event、StorageClass、ResourceQuota

一切都是为Pod服务在这里插入图片描述

自定义资源

CustomResourceDefinition:CRD
CRD(通过ApiServer)—>Restful资源路径

控制器模式

控制器模式是典型的生产者—消费者模式
在这里插入图片描述

控制器模式原理:
有两个方法Informer和lister
在这里插入图片描述

Deployment Controller

ReplicaSet的命名方式
Deployment Controller读取Deployment中podTemplate并进行Hash计算
Deployment-name-[pod-template-hash]
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐