k8s之pod控制器
Posted leiwenbin627
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s之pod控制器相关的知识,希望对你有一定的参考价值。
Pod控制器类型:
ReplicationController à Replicaset
Replicaset:维持用户期望的pod副本数 标签选择器:以便选定由自己选定管理的pod副本 pod资源模板:完成pod资源的新建
特点:管理无状态的pod资源,精确反映用户所定义的目标数量
K8s不建议直接使用Replicaset,而是使用Deployment
Deployment:工作在replicaset上,通过控制replicaset来控制pod
Deployment具备replicaset功能,还具有滚动更新,回滚,等更多强大机制,还提供声明式配置功能,管理群体,而不关注单个节点
DaemSet:确保集群中的每一个node只运行一个特定的pod副本,实现系统级的后台任务,也具有标签选择器,也可以指定部分满足条件的node运行一个pod副本,比如监控具有ssd存储的node节点
以上共同的特点:pod服务无状态,pod服务必须是守护进程类的,
Job:一次性作业,任务完成,pod退出
Cronjob:周期性运行,每一次完成,pod退出
Statefulset:管理有状态的运用pod,每一个pod运用,每一个pod副本,都是单独管理,
备注:
TPR: third party resource, 1.2 ~ 1.7版本 支持第三方资源
CDR: custom defined resource , 1.8+版本 支持自定义资源
Operator
Helm:
Pod控制详解:
replicaset
kubectl explain replicaset
kubectl explain rs
spec控制器规格
kubectl explain rs.spec
模板 既pod模板
kubectl explain rs.spec.template
模板规格 pod模板规格
kubectl explain rs.spec.template.spec
实例:定义一个replicaset控制器
vim replicaset-demo.yaml
apiVersion: apps/v1 控制器版本
kind: ReplicaSet 类型
metadata: 控制器元数据
name: myapp 控制器name 也是创建的pod的名称
namespace: default 控制器名称空间
spec: 控制器规格
replicas: 2 创建2个副本
selector: 控制器选择器
matchLabels: 匹配
app: myapp 选择的pod标签
release: canary
template: pod模板
metadata: pod模板元数据
name: myapp-pod pod模板的pod名,实际使用选择器的name
labels: pod模板的pod标签
app: myapp pod模板pod标签名
release: canary
environment: qa
spec: pod模板的pod的spec
containers:
- name: myapp-container
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort: 80
创建replicaset选择器和pod
kubectl create -f replicaset-demo.yaml
查询验证
kubectl get rs
kubectl get replicaset
kubectl get pods
kubectl describe pod myapp-r65th
验证创建的replicaset控制器
kubectl delete pods myapp-r65th 删除一个pod,replicaset控制器会重新创建一个pod,以维持2个pod
kubectl get pods
如果pod数量大于2个
kubectl get pods --show-labels
kubectl create -f pod-demo.yaml
kubectl label pods pod-demo release=canary 这种情况pod的label标签和 myapp的一样,控制器replicaset会认为是和myapp同类型的pod,那么就会随机终止并删一个这样的pod以维持2个副本
kubectl get pods --show-labels
动态扩容:
kubectl edit rs myapp
kubectl edit replicaset myapp
修改replicas: 的值即可
动态升级:
kubectl edit rs myapp
kubectl edit replicaset myapp
kubectl edit 控制器类型 控制器名
修改- image:ikubernetes/myapp:v2即可
查询版本验证
kubectl get rs -o wide
注:只是升级镜像,容器升级需要重新建
以上是关于k8s之pod控制器的主要内容,如果未能解决你的问题,请参考以下文章