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资源路径