当前位置: 首页 > article >正文

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
​

http://www.kler.cn/a/292772.html

相关文章:

  • leetcode-位运算题型
  • JVM 中的完整 GC 流程
  • HTTP 客户端怎么向 Spring Cloud Sleuth 传输跟踪 ID
  • Ruby编程语言全景解析:从基础到进阶
  • 虚幻引擎 CEO 谈元宇宙:发展、策略与布局
  • HBase理论_背景特点及数据单元及与Hive对比
  • 【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提
  • Java项目:128 基于Spring Boot的装饰工程管理系统
  • 机器学习——决策树模型
  • TensorFlow-keras介绍(一)
  • 如何在极狐GitLab中添加 SSH Key?
  • Ubuntu固定USB串口名(包括1拖N的USB串口)
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(17)云原生架构设计理论与实践
  • Echart 环形图 特殊字体 富文本
  • excel透视图、看板案例(超详细)
  • 基于SringBoot框架的智慧博物馆预约平台
  • ChatGPT 调教教程
  • 人工智能主要是学什么的?
  • 过滤器(Filter)和拦截器(Interceptor)
  • 亚信安慧AntDB数据库与华为DPA数据保护一体机完成兼容性互认证,共筑数据安全与效率新高地
  • AI环境初识
  • 上交2024最新-《动手学大模型》实战教程及ppt分享!
  • 无风扇嵌入式工控机的技术优势
  • 如何使用ChatGPT撰写研究计划书?AI写作全攻略
  • 前端发送邮件至指定邮箱的方式方法有哪些?
  • 【网络安全】调试模式获取敏感数据