pod控制器:

pod控制器:

pod控制器,工作负载 workload,介于k8s集群和节点之间。

中间层。

确保pod资源符合预期的状态。

pod资源出现故障的时候,会自动重启。

对基于控制器创建的pod,delete pod 相当于对pod重启,并不能删除pod

必须要把控制器删除,pod才会自动删除。

pod控制器的类型:

1、replicaset 结合控制器一块,控制副本数量。

2、Deployment 最常见,也是最好用的控制器。

3、DaemonSet 确保在每个节点上都会部署一个pod,主要用于系统后台的支撑业务。

特性:服务是无状态应用。

delete pod 也相当于重启

核心:需要在每个节点都部署,或者是需要在后台运行的pod ELK

DaemonSet部署不能指定副本数

4、StateFulSet 有状态的部署,pod的名称是固定的,一旦创建永久不变,增加副本数,也是有序的递增

可以指定副本数,pod可以扩容和缩容

delete pod 也是相当于重启,只不过pod的名称不再发生变化。

主要用于数据库,数据库必须要有指定的编号。主要用于对数据独立性要求比较高的应用。

Cluster Ip 为空 None

无头服务: headless

有状态的副本需要持久化存储。每一个pod都有一个自己的独立的挂载卷。

hostpath

动态pv自动给每个pod创建一个挂载卷。

创建DaemonSet的pod
[root@master01 k8s-yaml]# vim daemonSet.yml 
​
  labels:
    app: nginx1
spec:
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx1
        image: nginx:1.22
      nodeName: "node01"
#指定节点部署

创建StateFulSet的pod
apiVersion: v1
kind: Service
metadata:
  name: nginx-web
  labels:
    app: svc1
spec:
  ports:
  - port: 80
#service的暴露端口
    targetPort: 80
#容器的端口
  clusterIP: None
  selector:
    app: nginx1
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  labels:
    app: nginx1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  serviceName: "nginx-web"
#这个字段必须要加,名称要和service的名字一一对应
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      terminationGracePeriodSeconds: 10
#pod被终止时,强制等待容器退出的时间是10秒,可以不加。也可以在命令行 --force。
      containers:
      - name: nginx1
        image: nginx:1.22
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: ["ReadWriteMany"]
      storageClassName: "nfs-client-storageclass"
      resources:
        requests:
          storage: 1Gi
#所有的pod都会自动生成一个pv,在存储节点目录创建一个独立的数据卷。不能作为统一的数据同步到容器。

DNS解析:因为是无头服务,k8s集群为这些pod做一个dns的记录

web-0.nginx-web.default.svc.cluster.local

# 所有的pod都会自动生成一个pv,在存储节点目录创建一个独立的数据卷。不能作为统一的数据同步到容器
[root@master01 k8s-yaml]# kubectl run -i --tty dns-test --image=busybox --restart=Never -- sh
If you don't see a command prompt, try pressing enter.
/ # 
/ # nslookup web-1.nginx-web.default.svc.cluster.local
Server:     10.96.0.10
Address:    10.96.0.10:53
​
​
Name:   web-1.nginx-web.default.svc.cluster.local
Address: 10.244.1.230

补充:job控制器

任务类型的控制器:

普通任务 JOB

定时任务:Cronjob

批量处理脚本,数据库迁移,视频解码的一次性的任务。

需要定期执行的任务,比如环境扫描,监控检查等等。

[root@master01 k8s-yaml]# vim job.yml
​
#job,普通类型的任务
apiVersion: batch/v1
kind: Job
metadata:
  name: centos
spec:
  template:
    spec:
      containers:
      - name: centos
        image: centos:7
        command: ["/bin/bash","-c","test -e /etc/passwd"]
      restartPolicy: Never
#job类型的pod重启策略只能是Never或者OnFailure
  backoffLimit: 4
#表示如果任务失败,重试的次数,可以不加,默认是6次。
​
[root@master01 k8s-yaml]# kubectl get job
NAME     COMPLETIONS   DURATION   AGE
centos   1/1           2s         43s
​

cronjob:

[root@master01 k8s-yaml]# vim cronjob.yml
​
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: test1-1
spec:
  schedule: "*/1 * * * *"
#定时任务执行行的时间周期。* * * * *
  jobTemplate:
#指定定时任务的执行模板 镜像和任务
    spec:
      template:
        spec:
          containers:
          - name: centos
            image: centos:7
            command: ["/bin/bash","-c","test -e /etc/passwd"]
          restartPolicy: OnFailure
#重启策略也只能是Never和Onfailure
[root@master01 k8s-yaml]# kubectl get cronjobs.batch 
NAME      SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
test1-1   */1 * * * *   False     0        32s             2m12s
​

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: test1-1
spec:
  schedule: "*/1 * * * *"
#定时任务执行行的时间周期。* * * * *
  concurrencyPolicy: Allow
#要保留的失败的完成作业数,默认保留1个
  startingDeadlineSeconds: 15
#pod必须在15秒内开始执行定时任务的内容,超过这个时间没有运行,任务不运行而且标记为失败
  jobTemplate:
#指定定时任务的执行模板 镜像和任务
    spec:
      template:
        spec:
          containers:
          - name: centos
            image: centos:7
            command: ["/bin/bash","-c","test -e /etc/passwd"]
          restartPolicy: OnFailure
#重启策略也只能是Never和Onfailure
​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值