k8s基本概念
原文链接:https://zhuanlan.zhihu.com/p/24566407946
1.master(控制面板)
1. api-server 接口服务,给予rest风格开放k8s接口的服务 2. kube-controller-manager:控制器管理器:管理各个类型的控制器,针对k8s中的各种资源进行管理 3. cloud-controller-manager:云控制器管理器:第三方云平台提供的控制器api对接管理功能 4. kube-scheduler:调度器:负责将Pod给予一定算法,将其调用到更合适的节点上 5. etcd:理解为k8s的数据库,键值类型存储的分布式数据库,提供了给予raft算法实现自己的集群高可用
2. Node(节点)
1. kubelet:负责Pod的生命周期,存储,网络 2. kube-proxy:网络代理,负责service的服务发现,以及对应的负载均衡。(基于网络4层的协议) 3. container-runtime:容器运行时环境:docker,containerd等
3. 其他
kube-dns
ingress controller
Prometheus:监控
4. 服务的分类
1. 有状态:会对本地环境产生依赖,需要生成数据(累死数据库,Redis等)
优点:可以存数据
缺点:集群环境下需要实现主从,数据同步,备份,水平扩容复杂 2. 无状态:不会对本地环境产生任何依赖。不会在运行时产生新的数据到内存或磁盘。(类似nginx)
缺点:不能存数据
优点:对客户端透明,无依赖,可以高效实现扩容迁移
5. 资源和对象
k8s中,一切皆资源
对象是基于资源创建出来的实例
1. 资源的分类:元数据类型,集群,命名空间
集群资源(k8s整个集群):集群级别的资源,作用于集群之上,集群之下的所有资源可以共享使用
命名空间(命名空间级别):作用在命名空间之上,通常只能在该命名空间内使用
元数据类型(资源级别):对于资源的元数据描述,每一个资源都可以使用元数据类型的数据
元数据类型:
HPA:Pod自动扩容/缩容(30s检测一次)
PodTemplate: 关于pod的定义,HPA会用到
LimitRange: 可以对集群内的request(最小资源)和limit(最大)做控制
集群
NameSpace
Node
ClusterRole
ClusterRoleBinding
命名空间
见下一节
6.命名空间
1. Pod
最小的可部署单元,内部有至少有一个pause容器,紧耦合的程序应该部署在同一个Pod内,通常一个Pod内运行一个业务容器
replicas:指定Pod副本数量
控制器:
1. 适用无状态服务的控制器(适用于普通服务,不需要持久化,数据丢失不会有影响):Deployment(重点):是 Kubernetes 中的一种资源对象,用于管理和维护一组 Pod 副本。它的主要功能包括:
-
声明式更新:用户可以描述期望的应用状态,Deployment 控制器会自动调整实际状态以匹配期望状态。
-
管理无状态应用:Deployment 适用于无状态应用的生命周期管理,包括扩展、缩容和无停机更新
-
ReplicaSet 管理:每个 Deployment 对应一个 ReplicaSet,确保 Pod 副本数量与配置一致
通过使用 Deployment,用户可以更轻松地管理 Kubernetes 集群中的应用程序。
2. 适用有状态服务的控制器(适用于数据库,需要持久化的服务):StatefulSet:名称,网络,数据等不变化。有序伸缩扩展,有序删除。Headless Service:类似于DNS,VolumeClaimTemplate:持久化

3. 守护进程的控制器:通过声明一个想要的daemonset状态,表明每个节点上都需要有一个特定的 Pod
4. 任务/定时任务的控制器

浙公网安备 33010602011771号