k8s资源控制器

#控制器类型

ReplicaSet    #rs,确保pod副本数,rs已替代rc
Deployment #管理rs,升级、回滚、扩容pod
DaemonSet #在每个节点运行一个Pod
StateFulSet #解决有状态服务,Pod重新调度后PodName和HostName不变
Job/CronJob #批处理任务/定时任务
HPA #按CPU使用率或自定义metrics扩展Pod数量 Horizontal Pod Autoscaling

#rs实例

#rs-demo.yaml
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: rs-demo
spec:
replicas: 2 #副本数量
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-rs
image: alivv/nginx:node
ports:
- containerPort: 80
#创建
kubectl create -f rs-demo.yaml #查看rs
kubectl get rs
kubectl describe rs rs-demo #查看pod
kubectl get pod
kubectl get pod --show-labels #删除所有pod
kubectl delete pod --all
#再次查看,发现pod存在,保持在副本数量
kubectl get pod #删除
kubectl delete -f rs-demo.yaml

#Deployment实例

Deployment -> 创建ReplicaSet(rs) -> 创建Pod

#nginx-deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-demo
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: alivv/nginx:node
ports:
- containerPort: 80
#创建( --record参数记录命令,方便后续查看变化)
kubectl apply -f nginx-deployment.yaml --record #查看
kubectl get deployments
kubectl get rs
kubectl get pod --show-labels #扩容
kubectl scale deployment nginx-deploy --replicas 5 #Deployment自动扩展
#kubectl autoscale deployment nginx-deployment --min=3 --max=9 --cpu-percent=80 #更新镜像
kubectl set image deployment/nginx-deploy nginx=nginx:alpine #回滚到前一个版本
kubectl rollout undo deployment/nginx-deploy
#查看回滚状态(回滚完成返回值为0 echo $?)
kubectl rollout status deployment/nginx-deploy
#查看历史rs
kubectl get rs
#查看回滚历史
kubectl rollout history deployment nginx-deploy #回滚到指定版本
#kubectl rollout undo deployment nginx-deploy --to-revision=2 #生产建议设置Deployment的.spec.revisionHistoryLimit限制保留revision历史记录数量

Deployment更多参数 https://www.kubernetes.org.cn/deployment

#DaemonSet实例

#nginx-ds.yaml
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: deamonset-example
labels:
app: daemonset
spec:
selector:
matchLabels:
name: deamonset-example
template:
metadata:
labels:
name: deamonset-example
spec:
containers:
- name: nginx
image: alivv/nginx:node
#部署
kubectl create -f nginx-ds.yaml #查看启动node
kubectl get pods -o wide #删除
kubectl delete -f nginx-ds.yaml

#Job实例

可选参数

RestartPolicy 仅支持Never或OnFailure

spec.completions 需要成功运行Pod个数,默认1

spec.parallelism 运行Pod个数,默认1

spec.activeDeadlineSeconds 失败Pod重试最大时间

#job-demo.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template:
metadata:
name: job-demo
spec:
restartPolicy: Never
containers:
- name: job-test
image: busybox
command: ["bin/sh", "-c", "for n in $(seq 1 9);do echo $n;done"]
#创建
kubectl create -f job-demo.yaml #查看
kubectl get job
kubectl get pod
kubectl log $(kubectl get pod |awk '/job-demo/{print $1}') #删除
kubectl delete -f job-demo.yaml

#cronjob实例

cronjob -> 创建job -> 创建Pod

schedule: "* * * * *" 分 时 日 月 周,相当于Linux定时任务

.spec.startingDeadlineSeconds 启动Job期限,默认没限制

.spec.successfulJobsHistoryLimit 保留完成job数,默认3

.spec.failedJobsHistoryLimit 保留失败job数,默认1

.spec.concurrencyPolicy 并发策略,默认Allow,Forbid禁止,Replace关闭旧的运行新Job

#cronjob-demo.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
name: cronjob-demo
spec:
schedule: "*/1 * * * *" #每分钟执行
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: cronjob-demo
image: busybox
args:
- /bin/sh
- -c
- echo -n $(hostname) 'cronjob demo ';date +%T
#创建
kubectl create -f cronjob-demo.yaml #查看
kubectl get cronjob kubectl get job
kubectl get pod
kubectl get pod |awk '/cronjob-demo/{print "kubectl logs "$1}' |bash #删除
kubectl delete -f cronjob-demo.yaml

Blog地址 https://www.cnblogs.com/elvi/p/11755712.html

本文git地址 https://gitee.com/almi/k8s/tree/master/notes

3.k8s资源控制器rs Deployment Job的更多相关文章

  1. Kubernetes K8S之资源控制器RC、RS、Deployment详解

    Kubernetes的资源控制器ReplicationController(RC).ReplicaSet(RS).Deployment(Deploy)详解与示例 主机配置规划 服务器名称(hostna ...

  2. Kubernetes K8S之资源控制器StatefulSets详解

    Kubernetes的资源控制器StatefulSet详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...

  3. Kubernetes K8S之资源控制器Daemonset详解

    Kubernetes的资源控制器Daemonset详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C/ ...

  4. Kubernetes K8S之资源控制器Job和CronJob详解

    Kubernetes的资源控制器Job和CronJob详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...

  5. k8s学习-资源控制器

    4.3.资源控制器 4.3.1.概念 Kubernetes中内建了很多种controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为. 4.3.2.分类 Replication ...

  6. Kubernetes的资源控制器和Service(四)

    一.定义和分类 1,定义 k8s 中内建了很多控制器(controller ),这些相当于一个状态机,用来控制 Pod 的具体状态和行为. 2,类型 ReplicationController.Rep ...

  7. Kubernetes-5.Pod资源控制器(1)

    docker version:20.10.2 kubernetes version:1.20.1 本文概述Kubernetes Pod资源控制器的ReplicaSet.Deployment.Daemo ...

  8. K8S ingress控制器

    文章转载自: K8S ingress控制器 (一)https://blog.51cto.com/u_13760351/2728917 K8S ingress控制器 (二)https://blog.51 ...

  9. Prometheus 监控K8S 资源状态对象

    Prometheus 监控K8S 资源状态对象 官方文档:https://github.com/kubernetes/kube-state-metrics kube-state-metrics是一个简 ...

随机推荐

  1. TensorFlow——LSTM长短期记忆神经网络处理Mnist数据集

    1.RNN(Recurrent Neural Network)循环神经网络模型 详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html 2. ...

  2. scrapy 运行时报错 No module named _sqlite3

    新服务器上运行scrapy时报错 exceptions.ImportError: No module named _sqlite3 原因 由于新的环境缺少sqlite的依赖,编译python3是虽然不 ...

  3. 四、Signalr手持令牌验证

    一.JWT 服务端在respose中设置好cookie,浏览器发请求都会自动带上,不需要做额外设置 但是如果客户端是非浏览器,或者要兼容多种客户端,这个方法就不行了 Js端 @{ Layout = n ...

  4. 020-zabbix修改主机名为中文名

    我这边zabbix版本有2.4和3的都有. 要让zabbix主机名支持中文,,需要修改zabbix的php代码文件,如下图修改完中文主机名是不支持的: 实现步骤: 进到zabbix web目录,一般在 ...

  5. Big Data(一)分治思想

    按照课程安排,接下来半年,我将会去上一个为期半年的大数据课程.第一课是马士兵老师机构的周老师所讲,这里单纯记录讲课的内容. 问题1: 我有一万个元素(比如数字或单词)需要存储? 如果查找某一个元素,最 ...

  6. VM错误解决:This Virtual Machine Appears To Be In Use

    刚才准备做网站(数据备份都在VM里面),没想到启动不起来,咋一看,出现This Virtual Machine Appears To Be In Use字号,不过貌似我没有启动任何VM啊,何来in u ...

  7. CPU、CPU核与线程的关系

    CPU相关概念: CPU:独立的中央处理单元,体现在主板上是有多个CPU的插槽. CPU cores:在每一个CPU上,都可能有多个核(core),每一个核中都有独立的一套ALU.FPU.Cache等 ...

  8. jvm——内存模型

    这是我理解的jvm内存模型,这一整块可以简单理解为虚拟内存空间: jvm代码.jvm数据:是运行jvm所用到的代码和数据,并不是我们自己编程得到的代码和数据 direct memory:主要是NIO在 ...

  9. MFC多文档获取窗口句柄

    GET App   AfxGetInstanceHandle()    AfxGetApp()   GET Frame->View->Document     SDI    AfxGetM ...

  10. jquery even选择器 语法

    jquery even选择器 语法 作用::even 选择器选取每个带有偶数 index 值的元素(比如 2.4.6).index 值从 0 开始,所有第一个元素是偶数 (0).最常见的用法:与其他元 ...