资源创建方式

  1. kubernetes支持两种创建资源的方式:

    1. 用kubectl命令直接创建,比如:kubectl run nginx-deployment --image=nginx1.7.9 --replicas=2,在命令行中通过参数指定资源的属性

    2. 通过配置文件和kubectl apply创建,创建nginx.yml文件,然后运行命令:kubectl apply -f nginx.yml在这里插入图片描述

    3. 比较:

      1. 基于命令的方式:简单,直观,快捷,上手快
      2. 基于配置文件的方式:配置文件描述了最终要达到的状态,提供了创建资源的模板,能够重复部署,可以像管理代码一样管理部署,适合正式的,跨环境的,规模化部署
  2. 配置文件介绍:

    1. apiVersion: extensions/v1beta1:apiVersion是当前配置格式的版本
    2. kind: Deployment:kind是要创建的资源类型,这里是Deployment
    3. metadata:是该资源的元数据,name是必须的元数据项
    4. spec:是该Deployment的规格说明
    5. replicas:指明副本数量,默认为1
    6. template:定义Pod的模板,这是配置文件的重要部分
    7. metadata:定义Pod的元数据,至少要定义一个label,label的key和value可以任意指定
    8. spec:描述Pod的规格,此部分定义Pod中每一个容器的属性,name和image是必须的
  3. 删除资源:执行kubectl delete deployment nginx-deployment或者kubectl delete -f nginx.yml

  4. 伸缩:

    1. 伸缩是指在线增加或减少Pod的副本数

    2. Deployment nginx-deployment初始是两个副本,k8s-node1和k8s-node2各跑了一个副本,现在修改nginx.yml文件,将副本数改为5个在这里插入图片描述

    3. 再次执行kubectl apply,进行应用的部署,然后执行kubectl get pod -o wide查看pod状态,调度器会根据集群的资源和指定的调度策略(如亲和性规则、亲缘关系和反亲缘性)来选择合适的节点分配pod副本在这里插入图片描述

    4. 三个副本被创建并调度到节点1和节点2上,出于安全考虑,默认配置下kubernetes不会将Pod调度到Master节点上,如果希望将master也当做Node使用,可以执行命令:kubectl taint node k8s-master node-role.kubernetes.io/master- 。如果要回复Master node only状态,执行命令:kubectl taint node k8s-master node-role.kubernetes.io/master=“”:NoSchedule

  5. Failover:

    1. 模拟k8s-node2故障,关闭该节点,等待一段时间后,kubernetes会检查到k8s-node2不可用,将k8s-node2上的pod标记为Unknown状态,并在k8s-node1上新创建k8s-node2上的数量的pod,维持副本数不变在这里插入图片描述

    2. 当k8s-node2恢复后,Unknown的Pod会被创建,不过已经运行的Pod不会重新调度回k8s-node2

  6. 用label控制pod的位置

    1. 默认配置下,scheduler会将pod调度到所有可用的node,不过如果将有大量磁盘IO的pod部署到配置了SSD的Node,或者Pod需要GPU,需要运行在配置了GPU的节点上,希望将Pod部署到指定的Node上

    2. kubernetes通过label来实现这个功能

    3. label是key-value对,各种资源都可以设置label,灵活添加各种自定义属性,比如执行命令标注k8s-node1是配置了SSD的节点

    4. kubectl label node k8s-node1 disktype=ssd,然后通过kubectl get node --show-labels查看节点的label在这里插入图片描述

    5. 部署pod到node1:在pod模板中,spec中通过nodeSelector指定将次pod部署到具有label disktypessd的Node上在这里插入图片描述

    6. 部署Deployment并查看Pod的运行节点,可以看到全部6个副本都运行在node1上在这里插入图片描述

    7. 删除label disktype命令:kubectl label node k8s-node1 disktype- 这个- 就是删除的意思。不过此时的Pod并不会重新部署,依然在k8s-node1上运行。除非在nginx.yml中删除nodeSelector设置,然后通过kubectl apply重新部署。kubernetes会删除之前的Pod并调度和运行新的Pod

  7. DaemonSet:

    1. Deployment部署的副本Pod会分布在各个Node上,每个Node都可能运行好几个副本,DaemonSet的不同之处在于:每个Node上最多只能运行一个副本

    2. DaemonSet的应用场景有:

      1. 在集群的每个节点上运行存储Daemon,比如glusterd或者ceph分布式存储系统
      2. 在每个节点上运行日志收集Daemon,比如flunentd或者logstash
      3. 在每个节点上运行监控Daemon,比如Prometheus Node Exporter或者collectd
    3. kubernetes自己就在用DaemonSet运行系统组件,执行命令:kubectl get daemonset --namespace=kube-system在这里插入图片描述

    4. 查看详细信息:kubectl get pod --namespace=kube-system -o wide在这里插入图片描述

    5. 因为flannel和kube-proxy属于系统组件,需要在命令行中通过–namespace=kube-system指定namespace指定namespace kube-system,若不指定,则只返回默认namespace default中的资源

  8. kube-flannel-ds:

    1. 部署flannel网络的命令:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml。

    2. flannel的DaemonSet就定义在kube-flannel.yml中在这里插入图片描述

    3. 配置解析

      1. DaemonSet配置文件的语法和结构与Deployment几乎完全一样,只是将kind设为DaemonSet
      2. hostNetwork指定Pod直接使用的是Node网络,相当于docker run --network=host
      3. containers定义了运行flannel服务的两个容器
  9. kube-proxy:

    1. 通过命令:kubectl edit daemonset kube-proxy --namespace=kube-system查看配置在这里插入图片描述

    2. 配置解析:

      1. kind:DaemonSet指定这是一个DaemonSet类型的资源
      2. containers定义了kube-proxy的容器
      3. status是当前DemonSet的运行时状态,这个部分是kubectl edit特有的,
      4. kubernetes集群中每个当前运行的资源都可以通过kubectl edit查看其配置和运行状态,比如:kubectl edit deployment nginx-deployment
  10. Job:

    1. 容器按照持续运行的时间可分为两类,服务类容器,和工作类容器

    2. 服务类容器通常持续提供服务,需要一直运行,比如HTTP,Server,Daemon等,

    3. 工作类容器则是一次性任务,比如批处理程序,完成后容器就退出

    4. kubernetes的Deployment,ReplicaSet和DaemonSet都用于管理服务类容器,对于工作类容器,使用Job

    5. myjob.yam配置解析在这里插入图片描述

      1. batch/v1是当前Job的apiVersion
      2. 指明当前资源的类型为Job
      3. restartPolicy指定什么情况下需要重启容器,对于Job,只能设置为Never或者OnFailure,对于其他controller,比如Deployment,可以设置为Always
      4. 通过kubectl apply -f myjob.yml启动Job
    6. 通过kubectl get job 查看Job的状态在这里插入图片描述

      1. desired和successful都为1,表示按照预期启动了一个pod,并且已经成功执行,通过kubectl get pod 查看pod的状态在这里插入图片描述

      2. 因为pod执行完毕后容器已经退出,需要用–show-all才能看到Completed状态的Pod

      3. 通过kubectl logs可以查看Pod的标准输出在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Apache SeaTunnel Zeta引擎源码解析(三) Server端接收任务的执行流程

作者:刘乃杰 编辑整理:曾辉 引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本,围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程,希望通过这篇文档,对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文…

物联网行业中心跳机制的介绍以及如何实现

一 概述 心跳机制出现在TCP长连接中,客户端和服务端之间定时发送一种特殊的数据包通知对方还在线,以确保TCP连接地可靠性,有可能TCP连接由于某些原因(例如网线被拔了,突然断电)导致客户端断了,…

WINDOWS AGENTARENA:EVALUATING MULTI-MODAL OS AGENTS AT SCALE论文学习

文章开头说现有的agent都是局限于特定领域(什么网络问答啊,仅限文字啊,仅限于某一个app啊)这样的,本文的工作主打一个贴近用户使用场景,用户用什么软件,看什么网页,本文的模型就用什…

1×1卷积核【super star 卷积核】

一、11卷积的作用 我们先来给出11卷积的一般作用,如下所示: • 跨通道的特征整合 • 特征通道的升维与降维 • 减少权重参数(卷积核参数) 【 简化模型 】 1.1 特征通道的升维与降维/跨通道的特征整合/简化模型 输入数据&…

字幕编辑用什么软件好?盘点国内外7款视频加字幕软件,简单高效!

视频添加字幕被认为是让观众更好理解您在视频中讲述内容的最佳和最常见的方式。例如,您可以给视频中的某些文字添加不同的颜色,以帮助观众识别视频中的角色。然而,在制作视频过程中,添加字幕往往是个耗时耗力的任务。因此&#xf…

五种数据库特性对比(Redis/Mysql/SQLite/ES/MongoDB)

做后端开发的程序员基本都要学会数据库的相关知识。 1、关系型数据 今天就着这段时间了解大模型的事需要牵扯到是我们接触最多的、也是入门后端必学的关系型数据库。在关系型数据库中,数据以表的形式进行组织和存储,每个表就像一个 Excel 表格&#xf…

火山引擎数智平台:高性能ChatBI的技术解读和落地实践

导读:大模型能力的发展和成熟,催生出新一代智能化 BI—— ChatBI,即通过自然语言处理(NLP)与大型语言模型(LLMs)的结合,极大简化数据分析过程,提高效率并降低分析门槛。火…

MacOS安装MAT教程

MAT下载地址MAT下载地址MAT下载地址MAT下载地址 如果不知道你的芯片类型, 可以执行如下命令 uname -m

荣誉 | 分贝通入选2024「Cloud 100 China」

近日,2024 Cloud 100 China 榜单于美高梅酒店正式发布,这是靖亚资本和崔牛会联合推出的第三届榜单。 全球商旅管理、企业支出全流程管控、数据BI全方位降本、AI赋能高效出行体验.......近年来,分贝通不断精进产品能力及BI&AI能力,再次上榜。 本届评选,组委会基于过去一年融…

设计模式之命令模式:从原理到实战,深入解析及源码应用

🎯 设计模式专栏,持续更新中 欢迎订阅:JAVA实现设计模式 🛠️ 希望小伙伴们一键三连,有问题私信都会回复,或者在评论区直接发言 命令模式 什么是命令模式? 命令模式(Command Pattern…

【读书笔记-《30天自制操作系统》-21】Day22

本篇内容首先介绍了CPU对于操作系统的保护功能,然后在上一篇API的基础上实现C语言编写的显示字符串与窗口画面的应用程序。 1. CPU对操作系统的保护 本篇首先通过对几种破坏操作系统的尝试,来介绍CPU对操作系统的保护功能。 1.1 防护破坏 尝试通过篡…

排序----数据结构

Comparable Integer Double 默认情况下都是按照升序排列的 string 按照字母再ASCII码表中对应的数字升序进行排列 冒泡排序 选择排序

js 3个事件监听器 EventListeners

起因, 目的: 我有2个显示器。 某视频网站,我想一边播放视频,一边搞其他。但是,当我把鼠标移动到浏览器外面,点击一下别处, 视频就会自动暂停. 这个叫做 事件监听! blur, 在元素或窗口失去焦点…

设计模式学习[6]---代理模式

文章目录 前言1.原理阐述2.举例2.1 例子与类图2.2 代码 总结 前言 代理这个词,从小到大听过不少。比如什么代理服务器,代理商,代理人之类的。通俗来说,代理无非无非就是我代表你处理事务的意思。 那么在设计模式中,针…

光伏业务管理系统:全流程管理成重点

一、光伏业务管理的挑战 光伏业务管理涉及项目规划、设计选型、施工建设、运营维护、数据分析等多个环节,每一个环节都直接关系到项目的经济性、安全性和可持续性。传统的管理方式往往存在信息不对称、流程不透明、响应速度慢等问题,难以适应光伏产业快…

洁净室污染源及环境监测仪器及验证服务

洁净室常见污染源 在严格控制的洁净室环境中,污染源的来源可能来自于很多途径,包含一些很容易被人们忽视,没有严格的进行维护保养的地方,知道污染的来源对于正确的对洁净室控制来说是非常关键的,基于这个原则&#xff…

老友记台词 第二季 第一集 Friends 201(全英版)

文章目录 201 The One With Ross New Girlfriend[Scene: Central Perk, Phoebe is recapping last season, and as she talks we see a montague of scenes from Ross and Rachel.][Scene: The Airport, continued from last season, Rachel is waiting for Ross to come of th…

英飞凌PSoC4000T示例工程

关于PSoC4000T的初步介绍见:英飞凌MCU第五代高性能CAPSENSE技术PSoC4000T_psoc 4000t-CSDN博客 下面这个工程,在modustoolbox中可编译、下载到开发板、debug调试。 编译时会用到mtb_shared这个库: 已经pdl这个periperal driver library库:

将多个pdf合并成一个文件?这几种合并方法很好用!

如何将多个pdf合并成一个文件?面对日益增长的PDF文档,我们时常陷入管理困境,这不仅仅关乎于时间与精力的巨大消耗,因为这些孤立的PDF文件如同散落的拼图碎片,让关键信息的搜寻变得如同大海捞针,严重拖慢了工…

系统安装CH384串口卡驱动

1. 解压驱动文件CH38XDRV.tar,并进入驱动目录 cd CH38XDRV/DRV_28S/LINUX/driver$ 2. 编译 sudo make edgeedge-PC:~/CH38XDRV/DRV_28S/LINUX/driver$ sudo make 请输入密码: 验证成功 make -C /lib/modules/4.19.0-arm64-desktop/build M/home/edge/CH38XDRV/DRV…