k8s概念
Kubernetes1.25变化
从 Kubernetes 1.25
开始,镜像仓库 k8s.gcr.io
将正式更改为 registry.k8s.io
,新的镜像仓库使用 CDN
将负载分散到了各个区域的多个云厂商,下载速度更快!用户体验更强!当然,墙内用户
就别想了.
CRI不再支持docker
。
K8S基本概念
CNI
容器网络接口CRI
容器运行时接口----1.25
之后不再支持docker
。
https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-runtimeCSI
容器存储接口
RC和RS
RC= Replication Controller(副本管理器)
RC定义了一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值。 RC包含如下几部分:
Pod期待的副本数( replicas)
用于筛选目标Pod的Label Selector
当Pod的副本数量小于预期数量的时候,用于创建新Pod的Pod模板( template)
当定义一个rc之后, master节点的controller manager组件就得到通知,定期巡检系统中存活的目标pod,并确保目标pod实例的数量刚好等于此rc的期望值,如果有过多pod运行,系统就会停掉一些,否则会创建一些。
RS= Replica Set(副本集)
Replication Controller在k8s 1.2版本之后升级成了新的概念, Replica Set(下一代RC), Replicas Set支持基于集合的标签选择器,而RC只支持基于等式的标签选择器。
Replicas Set的一些作用和特性:
- 大多数情况下,我们通过定义一个RC实现Pod的创建过程及副本数量的自动控制
- RC里面包含完整的Pod定义模板
- RC通过标签选择器机制实现对Pod的自动控制
- 通过改变Rc中的Pod副本数量,可以实现Pod的扩容和缩容功能
- 通过改变RC中的Pod模板中的镜像版本,可以实现Pod的滚动升级功能。
Deployment(部署)
部署是一个比RS( Replica Set)应用模式更广的API对象,可以是创建,更新,滚动升级一个发布的服务。
滚动升级一个服务,实际是创建一个新的RS,然后逐渐将新RS中副本数增加到理想状态,将旧RS中的副本数减小到0的复合操作;这样一个复合操作用一个RS是不太好描述的,所以用一个更通用的Deployment来描述。
以K8s的发展方向,未来对所有长期伺服型的的业务的管理,都会通过Deployment来管理。
Deployment的几个使用场景:
- 创建一个Deployment 对象来生产对应的Replicas Set并完成Pod副本的创建过程。
- 检查Deployment 的状态 看部署动作是否完成。
- 更新Deployment 以创建新的Pod(比如镜像升级)。
- 如果当前Deployment 不稳定,则回滚到一个早先的Deployment 版本。
- 挂起或者恢复一个Deployment。
Job(任务)
Job是K8s用来控制批处理型任务的API对象。批处理业务与长期伺服业务的主要区别是批处理业务的运行有头有尾,
而长期伺服业务在用户不停止的情况下永远运行。 Job管理的Pod根据用户的设置把任务成功完成就自动退出了。成功完
成的标志根据不同的spec.completions策略而不同:单Pod型任务有一个Pod成功就标志完成;定数成功型任务保证有N
个任务全部成功;工作队列型任务根据应用确认的全局成功而标志成功
资源限制
Kubernetes通过cgroups提供容器资源管理的功能,可以限制每个容器的CPU和内存使用.
# 限制nginx容器最多只用50%的CPU和128MB的内存
kubectl set resources deployment nginx-app -c=nginx --limits=cpu=500m,memory=128Mi
deployment "nginx" resource requirements updated
资源对象分类
资源对象
- pod
- Replica Set
- Replication Controller
- Deployment
- StatefulSet
- Daemon Set
- Job
- CronJob
- HorizontalPodAutoscaling
配置对象
- Node
- Namespace
- Service
- Secret
- ConfigMap
- Ingress
- Label
- ThirdPartyResource
- ServiceAccount
存储对象
- Volume
- Persistent Volume
策略对象
- SecurityContext
- ResourceQuota
- LimitRange