打卡学习kubernetes——了解五种控制器类型

目录

1 Deployment控制器

2 StatefulSet控制器

3 DaemonSet控制器

4 Job控制器

5 CronJob控制器


1 Deployment控制器

Deployment为Pod和Replica Set(下一代Replication Controller)提供声明式更新。

Deployment运行无状态应用,一般情况下,我们并不直接创建 Pod,而是通过 Deployment 来创建 Pod,由 Deployment 来负责创建、更新、维护其所管理的所有 Pods。

一个典型的用例如下:

创建Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:name: pc-deploymentnamespace: dev
spec:replicas: 3selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1

执行

$ kubectl create namespace dev
$ kubectl create -f pc-deployment.yaml
$ kubectl get deploy -n dev -o wide

2 StatefulSet控制器

StatefulSet是用来管理有状态应用的工作负载API对象,实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,称为”有状态应用“。在Deployment中,与之对应的服务是service,而在StatefulSet中与之对应的headless service

  • service:一组Pod访问策略,提供cluster-IP群集之间通讯,还提供负载均衡和服务发现。
  • Headless service 无头服务,不需要cluster-IP,直接绑定具体的Pod的IP。

特点

  • Pod一致性:包含次序(启动、停止次序)、网络一致性。此一致性与Pod相关,与被调度到哪个node节点无关;
  • 稳定的次序:对于N个副本的StatefulSet,每个Pod都在[0,N)的范围内分配一个数字序号,且是唯一的;
  • 稳定的网络:Pod的hostname模式为( statefulset 名 称 ) − (statefulset名称)-(statefulset名称)−(序号);
  • 稳定的存储:通过VolumeClaimTemplate为每个Pod创建一个PV。删除、减少副本,不会删除相关的卷。

 创建StatefulSet:

apiVersion: apps/v1
kind: StatefulSet
metadata:name: webnamespace: nginx-ss
spec:selector:matchLabels:app: nginx #必须匹配 .spec.template.metadata.labelsserviceName: "nginx"  #声明它属于哪个Headless Service.replicas: 3 #副本数template:metadata:labels:app: nginx # 必须配置 .spec.selector.matchLabelsspec:terminationGracePeriodSeconds: 10containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80name: webvolumeMounts:- name: nginx-pvcmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:   #可看作pvc的模板- metadata:name: nginx-pvcspec:accessModes: [ "ReadWriteOnce" ]storageClassName: "nginx-nfs-storage"  #存储类名,就是上面nginx-sc.yaml metadata.nameresources:requests:storage: 1Gi
EOF

执行

kubectl apply -f nginx-ss.yaml
kubectl get pods -n nginx-ss

 

3 DaemonSet控制器

DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本,通常用于实现系统级后台任务。比如ELK服务。部署一些集群的日志、监控或者其他系统管理应用。

创建DaemonSet

DaemonSet的描述文件和Deployment非常相似,只需要修改Kind,并去掉副本数量的配置即可。

apiVersion: apps/v1
kind: DaemonSet
metadata:name: nginx-daemonsetlabels:app: nginx
spec:selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.13.12ports:- containerPort: 80
EOF

 执行

kubectl apply -f nginx-daemonset.yaml

4 Job控制器

Job负责批量处理短暂的一次性任务(short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。容器中的进程在正常运行结束后不会对其进行重启,而是将pod对象置于completed状态。若容器中的进程因错误而终止,则需要依据配置确定重启与否,未运行完成的pod对象因其所在的节点故障而意外终止后会被重新调度。

kubernetes支持以下几种Job:

Job Controller

Job Controller负责根据Job Spec创建Pod,并持续监控Pod的状态,直至其成功结束。如果失败,则根据restartPolicy(只支持OnFailure和Nerver,不支持Always)决定是否创建新的Pod再次重试任务。

固定结束次数的Job示例:

apiVersion:  batch/v1

kind:  Job

metadata:  

        name:  busybox

spec:

        completions:  3

        template:

                metadata:

                        name:  busybox

                spec:

                      containers:

                      -   name:  busybox

                          image:  busybox

                          command:  ["echo","hello"]

                      restartPolicy:  Nerver

5 CronJob控制器

CronJob即定时任务,类似于Linux系统的crontab,在指定的时间周期运行指定的任务。

crontab的格式如下:

分 时 日 月 星期 要运行的命令 第1列分钟0~59 第2列小时0~23) 第3列日1~31 第4列月1~12 第5列星期0~7(0和7表示星期天) 第6列要运行的命令

用CronJob来管理我们上面的Job任务

apiVersion: batch/v1
kind: CronJob
metadata:name: cronjob-demo
spec:schedule: "*/1 * * * *"jobTemplate:spec:template:spec:restartPolicy: OnFailurecontainers:- name: helloimage: busyboxargs:- "bin/sh"- "-c"- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"
EOF

执行 

kubectl create -f cronjob.yaml

kubectl get cronjob

 是资料整理也是初步学习,部分内容来自Kubernetes(k8s)中的五种控制器_kubenets 控制器-CSDN博客

资料来自部分《Kubernetes指南》和《Kubernetes开源书》

继续学习吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

圈子社交系统-多人语音-交友-陪玩-活动报名-商城-二手论坛-源码交付,支持二开!

圈子小程序适用于多种场景,涵盖了各个领域的社交需求。以下是一些常见的适用场景: 兴趣社区: 用户可以加入自己感兴趣的圈子,与志同道合的人一起讨论交流,分享经验和知识。 行业交流: 各个行业可以建立自…

五、自然语言的学习之路

NLP学习笔记系列,欢迎收藏交流: 零、自然语言处理开篇-CSDN博客 一、NLP中的文本分类-CSDN博客 二、NLP中的序列标注(分词、主体识别)-CSDN博客 三、NLP中的句子关系判断-CSDN博客 四、自然语言中的生成式任务-CSDN博客 0、算…

反射整理学习

目录 1、反射介绍 2、反射API 2.1 获取类对应的字节码的对象(三种) 2.2 常用方法 3、反射的应用 3.1 创建 : 测试物料类 3.2 获取类对象 3.3 获取成员变量 3.4 通过字节码对象获取类的成员方法 3.5 通过字节码对象获取类的构造方法 4、创建对象…

突发想法2:浏览器的缓存有什么作用?为什么有了缓存,一开始较快,缓存多了打开某些网站会变慢?

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、问题二、解决1、为什么第一次打开时那么慢&#xff…

python练习一

1. 五个PPT上的界面打印【print、input函数】 print("\t\t\t\t\t英雄联盟商城登录界面\n~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n\t\t\t\t\t1. 用户登录\n\t\t\t\t\t2. 新用户注册\n\t\t\t\t\t3. 退出系统\n" "~ * ~ * ~ * ~ * ~ * ~ * ~…

由世界第一个AI软件工程师Devin引发的热潮背后----程序员到底会不会被代替?AI发展至如今是否初衷已变?

目录 一.Devin的登场是突破也是导火索 二.Devin的"逆天"能力 1、端到端构建和部署程序 2、自主查找并修复bug 3、训练和微调自己的AI模型 4、修复开源库 5、成熟的生产库也能做贡献 6、学习能力 三.Devin的出现甚至整个AI领域的进步,编程还有未来吗? 1.业…

接上一篇:分布式调用链追踪系统设计

所以必须得记录父子关系: A---->B 是 B---->C 的父调用 A---->D 是 D---->E 的父调用 A---->D 还是 D---->F 的父调用 如何记录呢?需要给每个调用分配一个ID (称为 SpanID),并且把这个 ID 传递给子调用, 子…

c++ 常用函数 集锦 整理中

c 常用函数集锦 目录 1、string和wstring之间转换 1、string和wstring之间转换 std::string convertWStringToString(std::wstring wstr) {std::string str;if (!wstr.empty()){std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;str converter.to_b…

对文本数据进行关键词提取,可以采用哪些算法?具体实现流程是什么样的?

The question 1: 对文本数据进行关键词提取&#xff0c;可以采用哪些算法&#xff1f;具体实现流程是什么样的&#xff1f; 一、常见的关键词提取算法&#xff1a; TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;: TF-IDF是一种统计方法&#xf…

mysql日志分析工具

我们使用命令去查看慢sql是一个比较麻烦的过程&#xff0c;这个时候&#xff0c;我们就用到了mysql日志分析工具mysqldumpslow使用当前命令时确保开启了慢sql日志 点击 简单使用 通过mysqldumpslow --help来查询命令的使用方法 mysqldumpslow 是一个用于分析慢查询日志的工具…

什么是多路复用

多路复用是一种技术&#xff0c;允许多个输入或输出流共享一个单一的通信信道或计算资源。通过多路复用&#xff0c;多个数据流可以同时在同一个通道上传输&#xff0c;提高了通信效率和资源利用率。 在计算机网络中&#xff0c;多路复用常用于实现同时传输多个数据流&#xf…

人工智能入门之旅:从基础知识到实战应用(六)

一、人工智能学习之路总结 人工智能学习的关键点与挑战可以总结如下: 关键点: 理论基础: 理解机器学习、深度学习等人工智能的基本原理和算法是学习的基础,包括线性代数、概率统计、微积分等数学知识,以及神经网络、卷积神经网络、循环神经网络等模型的原理。 实践项目:…

mac切换本地node版本

1.首先安装n模块&#xff1a; sudo npm install -g n2.升级node.js到最新稳定版 // 升级到最新版本 sudo n latest// 升级到稳定版本 sudo n stable// 升级到具体版本号 sudo n xx.xx// 最新稳定版本 sudo n lts3.切换使用版本 sudo n 7.10.04.删除指定版本 sudo n rm 7.10.05.…

2024.3.14

成员函数版本实现算术运算符的重载 全局函数版本实现算术运算符的重载 #include <iostream> using namespace std; class Number//定义一个数字类 {//因为a和b是私有成员&#xff0c;全局进行访问需要要friend进行声明friend const Number operator*(const Number &…

软件设计师16--段页式存储

软件设计师16--段页式存储 考点1&#xff1a;页式存储存储管理 - 页式存储组织存储管理 - 页面置换算法例题&#xff1a; 考点2&#xff1a;段式存储存储管理 - 段式存储组织例题&#xff1a; 考点1&#xff1a;页式存储 存储管理 - 页式存储组织 页式存储&#xff1a;将程序…

NLP:HanLP的下载与使用

昨天说到要做一个自定义的训练模型&#xff0c;但是很快这个想法就被扑灭了&#xff0c;因为这个手工标记的成本太大&#xff0c;而且我的上级并不是想要我做这个场景&#xff0c;而是希望我通过这个场景展示出可以接下最终需求的能力。换句话来说&#xff1a;可以&#xff0c;…

基于FPGA的HyperRam接口设计与实现

一 HyperRAM 针对一些低功耗、低带宽应用&#xff08;物联网、消费产品、汽车和工业应用等&#xff09;&#xff0c;涉及到外部存储&#xff0c;HyperRAM提供了更简洁的内存解决方案。 HyperRAM具有以下特性&#xff1a; 1、超低功耗&#xff1a;200MHz工作频率下读写不到50mW…

[已解决]安装CUDA失败报错(附万能解决办法)

[已解决]安装CUDA失败报错(附万能解决办法) &#xff08;Tips&#xff1a;赶时间直接看万能法2&#xff09; 经过长时间的尝试和研究&#xff0c;我终于解决了安装CUDA失败报错的问题。在这里&#xff0c;我将记录下我遇到的问题以及解决办法&#xff0c;希望对其他小白们有所帮…

ssh 下连接Mysql 查看数据库数据表的内容的方法及步骤

要通过SSH连接到MySQL数据库&#xff0c;可以按照以下步骤进行操作&#xff1a; 在本地计算机上打开终端或命令提示符。 使用SSH命令连接到远程服务器。命令的格式如下&#xff1a; ssh usernameserver_ip其中&#xff0c;username是指在远程服务器上的用户名&#xff0c;serv…

ListBox显示图片的一些问题

相关&#xff1a;http://t.csdnimg.cn/xTnu8 显示图片的方案就是&#xff1a;自定义一个Photo类&#xff0c;里面有属性Source&#xff1b;View再绑定ViewModel中的Photo集合&#xff0c;再到View中给ListView设置数据模板 关键点&#xff1a;这样做很容易忘记写数据模板 数据…