K8S优势在哪里:

有效的管理集群

支持多种存储

滚动更新,回滚应用

故障自愈

有效的提高服务器资源利用率(高可用率的调度)

账号,密码等敏感信息的有效管理(RBAC)

服务发现和服务治理

声明式系统:异步,可以保存原有应用的源代码或配置信息

对管理范畴的所有对象进行抽象(最大的优势)

K8S如何抽象和定义的

将业务模型化,对象通过AP形式发布

控制器模式(除了apiserver和etcd,其余组件都能看作是一个控制器)

每个对象都是互补而且能够组合的

APL操作复杂度和对象的数量趋近

APL不能依赖网络连接状态

尽量避免操作机制依赖全局状态

设计模型

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,pood安全策略,网络策略

自动化:HPA

服务发布:Service,lngress

应用管理:Deployment,ReplicaSet

DaemeonSet,StatefulSet,Job,CornJob

核心对象:Node,Pod,PV,PVC,Service,Endpoints,ServiceAccount,ConfigMap

Secret,Namespace,Event,StorageClass,ResourceQuota

自定义资源

CustomResourceDefinition:CRD

CRD(通过ApiServer)->Restful资源路径