kubernetes之控制器(4)

一、pod的分类:

  • 自主式pod:pod退出后不会被创建
  • 控制器管理的pod:在控制器的生命周期里,始终要维持pod的副本数目
    控制器类型:
  • Replication Controller 和ReplicaSet #RS只要是保证任何时间都有足够数量的副本在运行
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job
  • Cronjob
  • HPA全称Horizontal pod Autoscaler

Deployment
Deployment为Pod和Replicaset提供了一个串明式的定义方法
典型的应用场景:

  • 用来创建pod和Replicaset
  • 滚动更新和回滚
  • 扩容和缩容
  • 暂停与恢复

运行一个小例子:例子所在官网

二、控制器具体例子

eg1. rs.yml

yml文件
[root@node1 manifest]# cat rs.yml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  # Unique key of the ReplicaSet instance
  name: replicaset-example
spec:
  # 3 Pods should exist at all times.
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      # Run the nginx image
      - name: myapp
        image: myapp:v1

[root@node1 manifest]# kubectl apply -f rs.yml   #执行
[root@node1 manifest]# kubectl get pod -o wide   #效果
NAME                       READY   STATUS    RESTARTS   AGE    IP            NODE    NOMINATED NODE   READINESS GATES
replicaset-example-6zt5j   1/1     Running   0          6m3s   10.244.2.56   node3   <none>           <none>
replicaset-example-7zv27   1/1     Running   0          6m2s   10.244.1.46   node2   <none>           <none>
replicaset-example-t5jgl   1/1     Running   0          6m3s   10.244.2.55   node3   <none>           <none>

将rs.yml里的镜像版本换为v2,副本数不变的话,命令运行文件,版本号不会改变,除非增加副本书,新增加的版本才是v2,以前的还是v1版本。

eg2 deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-v1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1

在这里插入图片描述
将镜像版本改为v2,再次运行
在这里插入图片描述

eg3. daemonset.yml

[root@node1 manifest]# cat daemonset.yml 
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-v1
spec:
  selector:
    matchLabels:
      app: zabbix-agent
  template:
    metadata:
      labels:
        app: zabbix-agent
    spec:
      containers:
      - name: zabbix-agent
        image: zabbix-agent

在私有仓库拉取镜像。并改下标签上传到自己的私有仓库

[root@reg harbor]# docker pull zabbix/zabbix-agent
[root@reg harbor]# docker tag zabbix/zabbix-agent reg.westos.org/library/zabbix-agent
[root@reg harbor]# docker push reg.westos.org/library/zabbix-agent

在这里插入图片描述
如果新开一个节点,daemonset也会在新开的节点上拉取一个pod

eg4. job.yaml

在私有仓库拉取perl镜像,docker tag改标签,再上传到私有仓库方便本地各节点下载。

[root@node1 manifest]# cat job.yaml 
apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    metadata:
      name: example-job
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl"]
        args: ["-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

运行:
[root@node1 manifest]# kubectl apply -f job.yaml
job.batch/example-job created
[root@node1 manifest]# kubectl get pod
NAME READY STATUS RESTARTS AGE
example-job-z4bbh 0/1 ContainerCreating 0 6s
[root@node1 manifest]# kubectl get pod
NAME READY STATUS RESTARTS AGE
example-job-z4bbh 0/1 Completed 0 14s
查看运行结果
在这里插入图片描述

eg5 CronJob.yaml

[root@node1 manifest]# cat cronjob.yaml 
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-example
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: crontab
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo hello from k8s cluster
          restartPolicy: OnFailure
```[root@node1 manifest]# kubectl apply -f cronjob.yaml 
cronjob.batch/cronjob-example created
[root@node1 manifest]# kubectl get pod
No resources found in default namespace.

[root@node1 manifest]# kubectl get pod
NAME                               READY   STATUS              RESTARTS   AGE
cronjob-example-1593152220-bvs5x   0/1     ContainerCreating   0          6s

每分钟创建一个
[root@node1 manifest]# kubectl get pod
NAME                               READY   STATUS      RESTARTS   AGE
cronjob-example-1593152220-bvs5x   0/1     Completed   0          103s
cronjob-example-1593152280-849w9   0/1     Completed   0          42s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值