深入理解K8S(一)
K8S原理理解
·
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]
更多推荐
已为社区贡献5条内容
所有评论(0)