七、k8s快速入门之资源控制器

文章目录

        • :star: RC
        • :star: Deployment
          • :three: create 和 apply的区别
        • :star: DaemonSet
        • :star: job&&CronJob

⭐️ RC

1️⃣ 查看版本

kubect api-resource
或
kubect explain rs

2️⃣ 编写Yaml文档

[root@master ~]# vim pod/rc.yaml
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  clusterName: nginx ##集群名
  name: test ##rs的名字
spec:
  replicas: 5 ##期望副本数
  selector: ## 标签匹配 它要和下面的pod标签一样才能匹配,如果为空则一pod模板为主
    matchLabels: ##标签
      app: web
  template: ##pod模板就和kind: Pod 一样
    metadata: 
      labels:
        app: web
    spec:
      containers:
      - name: webapp
        image: harbor.tanc.com/library/nginx
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP

//指向
[root@master ~]# kubectl create -f pod/rc.yaml   

rs并不会按照自己的标签来管理,而会按照selector来管理

3️⃣ 查看

[root@master ~]# kubectl get pod --show-labels  ##查看标签
NAME         READY   STATUS    RESTARTS   AGE    LABELS
test-9pdcc   1/1     Running   0          146m   app=web
test-fpzwh   1/1     Running   0          146m   app=web
test-g8g86   1/1     Running   0          146m   app=web
test-ljzgp   1/1     Running   0          146m   app=web
test-xw6m6   1/1     Running   0          146m   app=web

4️⃣ 修改一下标签

[root@master ~]# kubectl label pod test-9pdcc app=web1 --overwrite=true
pod/test-9pdcc labeled

overwrite如果为false则不允许覆盖标签,true则允许

在来查看一下有什么不同

[root@master ~]# kubectl get pod --show-labels 
NAME         READY   STATUS    RESTARTS   AGE    LABELS
test-7fjv6   1/1     Running   0          4s     app=web
test-9pdcc   1/1     Running   0          149m   app=web1
test-fpzwh   1/1     Running   0          149m   app=web
test-g8g86   1/1     Running   0          149m   app=web
test-ljzgp   1/1     Running   0          149m   app=web
test-xw6m6   1/1     Running   0          149m   app=web
   

5️⃣ 可以发现是多了一个pod,因为rs需要匹配标签,如果标签改了rs就匹配不到了,Pod就为2个了,没有达到期望值,他就会增加在增加一个Pod。

rs对pod副本数目的监控大多都是基于标签来管理的

6️⃣ 试一下把rs删除

[root@master ~]# kubectl get rs
NAME   DESIRED   CURRENT   READY   AGE
test   5         5         5       157m
[root@master ~]# kubectl delete rs test
replicaset.extensions "test" deleted

再来查看pod,发现pod,都在被删除中,可以看见是由rs管理的就会删除

[root@master ~]# kubectl get pod
NAME         READY   STATUS        RESTARTS   AGE
test-9pdcc   1/1     Running       0          157m
test-g8g86   0/1     Terminating   0          157m
test-ljzgp   0/1     Terminating   0          157m
⭐️ Deployment

image-20240430004543458

1️⃣ 编写yaml文档

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: http-delpoyment
spec:
  replicas: 3
  template:
    metadata:
      name: httpd
      labels:
       app: web
    spec:
      containers:
      - name: webapp
        image: harbor.tanc.com/library/httpd
        imagePullPolicy: IfNotPresent
        ports:
        - protocol: TCP
          containerPort: 80

2️⃣ 运行

[root@master ~]# kubectl apply -f pod/deployment.yaml ----record=true
deployment.extensions/http-delpoyment created      
3️⃣ create 和 apply的区别

create 和 apply都可以创建deployment 区别

kubectl create

(1)kubectl create命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的

(2)kubectl create命令,用同一个yaml 文件执行替换replace命令,将会不成功,fail掉。

kubectl apply

kubectl apply命令,根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性

ps2:

——record=false:在资源标注中记录当前kubectl命令。如果设置为false,则不记录该命令。如果设置为true,记录命令。如果没有设置,则默认只在已有注释值时更新现有注释值。

查看pod

[root@master ~]# kubectl get pod --show-labels
NAME                               READY   STATUS    RESTARTS   AGE   LABELS
http-delpoyment-7cffd4d96f-6d54x   1/1     Running   0          51s   app=web,pod-template-hash=7cffd4d96f
http-delpoyment-7cffd4d96f-jvj46   1/1     Running   0          51s   app=web,pod-template-hash=7cffd4d96f
http-delpoyment-7cffd4d96f-zntwn   1/1     Running   0          51s   app=web,pod-template-hash=7cffd4d96f      

4️⃣ 查看rs

[root@master ~]# kubectl get rs --show-labels
NAME                         DESIRED   CURRENT   READY   AGE   LABELS
http-delpoyment-7cffd4d96f   3         3         3       21m   app=web,pod-template-hash=7cffd4d96f

5️⃣ 查看deployment

[root@master ~]# kubectl get deployment --show-labels
NAME              READY   UP-TO-DATE   AVAILABLE   AGE   LABELS
http-delpoyment   3/3     3            3           21m   app=web
⭐️ DaemonSet

⭐️ DaemonSet 保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志、监 控或者其他系统管理应用

1️⃣ 编写yaml

apiVersion:  extensions/v1beta1
kind: DaemonSet
metadata:
  name: nginx-daemonset
  labels:
    app: daemonset-web
spec:
  selector:
    matchLabels:
      app: web-nginx
  template:
    metadata:
      name: nginx
      labels:
        app: web-nginx
    spec:
      containers:
      - name: nginx
        image: harbor.tanc.com/library/nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP

ds也并不会按照自己的标签来管理,而会按照selector来管理

2️⃣ 查看一下podds

[root@master ~]# kubectl get pod --show-labels
NAME                    READY   STATUS    RESTARTS   AGE     LABELS
nginx-daemonset-fntnx   1/1     Running   0          6m57s   app=web-nginx,controller-revision-hash=84b79765f6,pod-template-generation=1
nginx-daemonset-kll5r   1/1     Running   0          6m57s   app=web-nginx,controller-revision-hash=84b79765f6,pod-template-generation=1


[root@master ~]# kubectl get ds --show-labels
NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE     LABELS
nginx-daemonset   2         2         2       2            2           <none>          7m19s   app=daemonset-web


⭐️ job&&CronJob

job:

  • spec.template格式同Pod

  • RestartPolicy仅支持Never或OnFailure 就是从不重启和发生错误才重启

  • 单个Pod时,默认Pod成功运行后Job即结束

  • spec.completions标志Job结束需要成功运行的Pod个数,默认为1 就是代表你这个job要运行几次才算成功

  • spec.parallelism标志并行运行的Pod的个数,默认为1 ##就是一次可以运行几个job来完成任务

  • spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试 默认为秒极

1️⃣ 编写yaml

[root@master ~]# vim pod/job.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: echo-job
  labels:
    job: echo
spec:
  completions: 4 
  parallelism: 1
  activeDeadlineSeconds: 20
  template:
    metadata:
      name: echo-job
    spec:
      containers:
      - name: echo-job
        image: harbor.tanc.com/library/busybox
        imagePullPolicy: IfNotPresent
        command: ['sh','-c','echo hello-word']
        ports:
        - containerPort: 80
          protocol: TCP
      restartPolicy: Never

3️⃣ 查看job

[root@master ~]# kubectl get job
NAME       COMPLETIONS   DURATION   AGE
echo-job   4/4           6s         17s

4️⃣ 查看pod,可以看见job都是完成

[root@master ~]# kubectl get pod
NAME                    READY   STATUS      RESTARTS   AGE
echo-job-rkjl5          0/1     Completed   0          17s
echo-job-scf47          0/1     Completed   0          20s
echo-job-tq4hp          0/1     Completed   0          19s
echo-job-zf896          0/1     Completed   0          15s
nginx-daemonset-fntnx   1/1     Running     0          54m
nginx-daemonset-kll5r   1/1     Running     0          54m

5️⃣ 查看日志可以看见输出了hello-word

[root@master ~]# kubectl log echo-job-rkjl5
log is DEPRECATED and will be removed in a future version. Use logs instead.
hello-word

CronJob:

CronJob Spec

  • spec.schedule :调度,必需字段,指定任务运行周期,格式同Crontab \* \* \* \* \* 分 时 日 月 星期

  • spec.jobTemplate : job模板,必需字段,指定需要运行的任务,格式同Job

  • spec.startingDeadlineSeconds: 启动Job的期限(秒级别) ,该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的。如果没有指定,则没有期限

  • spec.concurrencyPolicy :并发策略,该字段也是可选的。它指定了如何处理被Cron Job创建的Jop的并发执行。只允许指定下面策略中的一种:

    • Allow(默认) :允许并发运行Job
    • Forbid :禁止并发运行,如果前-一个还没有完成,则直接跳过下一个
    • Replace :取消当前正在运行的Job,用-个新的来替换

    注意,当前策略只能应用于同- -个Cron Job创建的Job。如果存在多个Cron Job,它们创建的Job之间总是允许并发运行

  • spec.suspend: 挂起,该字段也是可选的。如果设置为true,后续所有执行都会被挂起。它对已经开始执行的Job不起作用。默认值为false

  • spec.successfullobsHistoryLimitspec.failedJobsHistoryLimit ] :历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job。默认情况下,它们分别设置为3和1。设置限制的值为0,相关类型的Job完成后将不会被保留。

1️⃣ 编写yaml文档

[root@master ~]# vim pod/cronjob.yaml 

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: echo-cronjob
spec:
  startingDeadlineSeconds: 25
  concurrencyPolicy: Allow
  schedule: "*/1 * * * * "
  jobTemplate:
    spec:
      template:
        metadata:
          name: cronjob-app
        spec:
          containers:
          - name: cronjob
            image: harbor.tanc.com/library/busybox
            imagePullPolicy: IfNotPresent
            command: ['sh','-c','echo how are you??']
          restartPolicy: OnFailure

2️⃣ 查看job

[root@master ~]# kubectl get cronjob
NAME           SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
echo-cronjob   */1 * * * *    False     0        32s             116s

3️⃣ 查看pod

[root@master ~]# kubectl get pod
NAME                            READY   STATUS      RESTARTS   AGE
echo-cronjob-1629463320-n9xx5   0/1     Completed   0          104s
echo-cronjob-1629463380-skghr   0/1     Completed   0          43s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS移植到STM32F103C8T6(HAL库)

目录 一、将STM32F103ZET6代码变更成STM32F103C8T6 二、 将FreeRTOS码源添加到文件 三、代码更改适配 四、测试 一、将STM32F103ZET6代码变更成STM32F103C8T6 点击魔法棒&#xff0c;点击Device&#xff0c;选择芯片为STM32F103C8T6 进行编译&#xff0c;无报错无警告&am…

Nginx 的 Http 模块介绍(上)

Nginx 的 Http 模块介绍&#xff08;上&#xff09; 1. http 请求 11 个处理阶段介绍 Nginx 将一个 Http 请求分成多个阶段&#xff0c;以模块为单位进行处理。其将 Http请求的处理过程分成了 11 个阶段&#xff0c;各个阶段可以包含任意多个 Http 的模块并以流水线的方式处理…

六西格玛项目助力,手术机器人零部件国产化稳中求胜——张驰咨询

项目背景 XR-1000型腔镜手术机器人是某头部手术机器人企业推出的高端手术设备&#xff0c;专注于微创手术领域&#xff0c;具有高度的精确性和稳定性。而XR-1000型机器人使用的部分核心零部件长期依赖进口&#xff0c;特别是高精度电机、关节执行机构和视觉系统等&#xff0c;…

基于Python爬虫与文本挖掘的网络舆情监控系统【附源码】

基于Python爬虫与文本挖掘的网络舆情监控系统 效果如下&#xff1a; 系统登录界面 注册页面界面 管理员主界面 用户界面 网络舆情管理界面 看板详细页面 系统简介界面 用户主界面 网络舆情界面 研究背景 随着网络空间舆论的日益活跃&#xff0c;其对社会事件的影响愈发显著。…

光影重塑 艺术无界——中央美术学院国际学院与北京曦烽摄影学院联展启幕

10月28日&#xff0c;中央美术学院国际学院与北京曦烽摄影学院联合举办的《重塑》摄影展&#xff0c;在中央美术学院国际学院艺术空间启幕。展览旨在打破传统“时尚摄影”的话语界限&#xff0c;通过镜头展现时尚的更多维度&#xff0c;既关注视觉美感&#xff0c;更深入挖掘时…

【Linux 25】网络套接字 socket 概念

文章目录 &#x1f308; 一、IP 地址概念⭐ 1. IP 地址的作用⭐ 2. 源 IP 地址和目的 IP 地址 &#x1f308; 二、端口号概念⭐ 1. 源端口号和目的端口号⭐ 2. 端口号范围划分⭐ 3. 端口号 VS 进程 ID⭐ 4. 套接字 socket 的概念 &#x1f308; 三、传输层的典型代表协议⭐ 1. …

配置mysql 主主模式 GTID

文章目录 一、前提二、修改my.cnf主1 10.255.131.9主2 10.255.131.10 三、配置主主3.1 配置主 10.255.131.93.2 配置从 10.255.131.103.3 配置主 10.255.131.103.4 配置从 10.255.131.9 四、验证五、同步问题排查以及恢复5.1 查看同步状态5.2 查看同步是否数据一致性&#xff0…

自动化研磨领域的革新者:半自动与自动自磨机的技术突破

据QYResearch调研团队最新报告“全球半自动和自动自磨机市场报告2023-2029”显示&#xff0c;预计2029年全球半自动和自动自磨机市场规模将达到5.3亿美元&#xff0c;未来几年年复合增长率CAGR为3.5%。 图00001. 半自动和自动自磨机&#xff0c;全球市场总体规模 如上图表/数据…

最长方连续方波信号

更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记 该专栏题目包含两部分&#xff1a; 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新&#xff0c;订阅防丢失 题目描述 输入一串方波信号&#xff0c;求取最长的完全连续交替方波信号&#xff0c;并将其输出&#x…

ARB链挖矿DApp系统开发模式定制

在区块链生态中&#xff0c;挖矿作为一种获取加密资产的方式&#xff0c;越来越受到关注。ARB链凭借其高效的性能和灵活的智能合约系统&#xff0c;成为了开发挖矿DApp的理想平台。本文将探讨ARB链挖矿DApp的开发模式定制&#xff0c;包括架构设计、功能实现以及最佳实践。 ARB…

YoloV8改进策略:Block改进|RFE模块,提高小物体的识别精度|即插即用|代码+修改过程

摘要 论文介绍 本文介绍了一种基于YOLOv5的人脸检测方法,命名为YOLO-FaceV2。该方法旨在解决人脸检测中的尺度变化、简单与困难样本不平衡以及人脸遮挡等问题。通过引入一系列创新模块和损失函数,YOLO-FaceV2在WiderFace数据集上取得了优异的表现,特别是在小物体、遮挡和困…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎&#xff0c;可用于全文搜索、分析和数据可视化。传统上&#xff0c;Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名&#xff0c;其中文档基于精确或部分关键字匹配进行匹配。然而&#xff0c;Elasticsearch 已经发展到支…

计算机网络:网络层 —— 虚拟专用网 VPN

文章目录 虚拟专用网 VPN 概述内联网 VPN外联网 VPN 虚拟专用网 VPN 概述 虚拟专用网&#xff08;Virtual Private Network&#xff0c;VPN&#xff09;&#xff1a;利用公用的因特网作为本机构各专用网之间的通信载体&#xff0c;这样形成的网络又称为虚拟专用网。 出于安全…

C语言函数嵌套调用

函数嵌套调用就是在一个函数中调用另一个函数&#xff1b; 看一个例子&#xff1b; max2函数返回2个整数中大的一个&#xff1b;max4中调用max2&#xff0c;实现返回4个整数中最大的一个&#xff1b; int max2(int, int); int max4(int, int, int, int);......void CCjjyyV…

C++:继承及其相关问题

继承的定义 继承机制是⾯向对象程序设计实现代码复⽤的重要⼿段&#xff0c;它允许我们在保持原有类特性的基础上进⾏扩展&#xff0c;增加⽅法 (成员函数) 和属性 (成员变量)&#xff0c;从而产⽣的类&#xff0c;这样的类称为派⽣类&#xff0c;也称为子类。而这样的类就成为…

Centos7.9 x86架构部署

一、部署环境 表 1‑1 环境服务版本号系统centos7.9_2009运行环境1JDK1.8_321前端WEBNginx1.14数据库postgresqlpostgresql13postgis3.1pgrouting3.1消息队列rabbitmq3.8.16运行环境2erlang23.3.3.1 二、部署JDK 2.1下载JDK安装包 官网下载JDK8 官网地址&#xff1a; https…

【uniapp3】分享一个自己写的h5日历组件

简言 分享一下自己基于uniapp写的日历组件。如果不太满足你的需求&#xff0c;可以自己改造。 日历 实现分析&#xff1a; 页面显示 - 分为顶部显示和日历显示&#xff0c;我这里做了多行和单行显示两种情况&#xff0c;主要是当时看着手机的日历做的&#xff0c;手机上的…

Nginx安装配置详解

Nginx Nginx官网 Tengine翻译的Nginx中文文档 轻量级的Web服务器&#xff0c;主要有反向代理、负载均衡的功能。 能够支撑5万的并发量&#xff0c;运行时内存和CPU占用低&#xff0c;配置简单&#xff0c;运行稳定。 写在前 uWSGI与Nginx的关系 1. 安装 Windows 官网 Stabl…

Java版企电子招标采购系统源业码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

MS01SF1 精准测距UWB模组助力露天采矿中的人车定位安全和作业效率提升

在当今矿业行业&#xff0c;随着全球对资源需求的不断增加和开采难度的逐步提升&#xff0c;传统的作业方式面临着越来越多的挑战。露天矿山开采&#xff0c;因其大规模的作业环境和复杂的地形特点&#xff0c;面临着作业人员的安全风险、设备调度的高难度以及资源利用率低下等…