k8s学习笔记-基础概念

(作者:陈玓玏)

  1. deployment特别的地方在于replica和selector,docker根据镜像起容器,pod控制容器,job、cronjob、deployment控制pod,job做离线任务,pod大多一次性的,cronjob控制离线定时任务,deployment保证pod挂掉的情况下自动重启,永远保持设置的副本数个的pod,修改副本数即可伸缩容(应该都是基于同一个镜像的容器的pod的副本),通过selector可以管理对应标签的pod;
  2. daemonset和deployment的区别是,deployment会自动重启pod到副本个数,保证业务永远在线,但不会在意pod在集群的哪个节点上。而daemonset会保证每个节点上都有一个pod,用于与其他节点进行通信、监控本节点、上报节点信息等,是守护进程,又称看门狗,能让每个节点都得到守护。但daemonset可能不会运行在master上,因为master上默认有一个“污点”,为了避免乱七八糟的业务都往master上部,所以如果想要master也有守护进程,可以修改守护进程的yaml中的“容忍度”。
  3. 容忍度就是每个pod能容忍有哪些“污点”的节点,“污点”就是节点有哪些限制等,修改污点和容忍度就能调节pod可以部署在哪些节点上,对deployment、daemonset来说都是一样的;
  4. service存在的意义就是,deployment保证永远能保持有n个在线的pod,daemonset就是能保证每个节点上都有可通信、监控的pod,service就是在复杂的pod重启后,保持前端只需要访问固定的ip。如果没有service,pod重启后,ip可能会变化,但service让前端只需要访问固定的ip,service去把具体的需求转发给具体的pod,称为服务发现。Service是利用kubeproxy实现的,有四层结构,有四种模式,只有nodeport和clusterip是非云厂商模式,前者能直接外网访问服务,后者只能集群内部访问。service是为动态ip地址的服务提供静态ip或域名访问,域名访问需要dns解析。域名访问可以用服务名加命名空间的形式来访问,Service另一个主要功能就是做负载均衡。
  5. Service的四层负载均衡和虚拟ip域名这些,导致它只适合做集群内部的负载均衡,要做外部的负载均衡,还需要更高级的功能,比如能利用常用的七层网络协议做负载均衡,并且能对接外部流量,对接到内部以后再由sevice做负载均衡。所以就有了ingress。Ingress的意思就是集群内外边界上的入口。你应该知道,Service 本身是没有服务能力的,它只是一些 iptables 规则,真正配置、应用这些规则的实际上是节点里的 kube-proxy 组件。如果没有 kube-proxy,Service 定义得再完善也没有用。ingress controller最常用的就是nginx。ingress和ingress controller中间还有一层ingress class,不同业务领域可以用不同的class,对接到不同的controller,避免了太多controller无法管理。
  6. 为什么要有持久卷?因为pod里的容器是由镜像产生的,镜像文件不能写,只能在pod里临时有个存储空间来写,如果pod消失了,存储空间和它里面的文件也就消失了,所以需要持久卷来持久化存储某些文件。持久卷一般通过挂载的形式挂载到容器中,其本质就是ceph、nfs等存储空间,pod没有管理权限。持久卷涉及两个概念,pvc和sc,pvc是代表pod向系统申请pv,一旦申请成功,k8s会把pv和pvc绑定在一起,sc叫storageclass,可以帮pvc找到合适的pv,避免pvc自己在一堆pv里面去找。pv就是持久卷,可以挂载到pod中的可持久化存储的位置,pvc就是代替pod向系统申请pv存储资源的,sc就是帮助pvc快速找到合适的pv的。一般我们想要持久化存储,先创建pv,再创建pvc,再把pv挂载到容器中,就可以在容器中实现持久化存储了。
  7. 持久卷如果使用hostpath,就是在本机,但pod可能在任意节点上,想要在集群任意节点实现持久化存储,就需要用网络存储,通常采用的就是分布式存储。
  8. 为什么有了deployment,还要有statefulset?因为deployment可以部署无状态应用,比如nginx,随时重启都可以接受网络请求,不需要记住上次运行到哪里了,然后接着运行,但有些应用是需要记住上次崩溃或者结束时的运行状态,中断重启需要能够接着运行,这就叫有状态的应用,deployment做不到,就需要statefulset。statefulset应用如果要对外提供服务,也需要配service,一般的service的域名使用的是“对象名. 名字空间”,每个 Pod 也会有一个域名,形式是“IP 地址. 名字空间”,但pod的ip不稳,所以一般不用,但有状态集的pod是有状态应用,需要有稳定的pod地址,所以service一般用有状态pod的新的域名,格式是“Pod 名. 服务名. 名字空间.svc.cluster.local”。为了保证有状态应用的持久化存储不会因为读写冲突而丢失数据,statefulset的持久化存储是专门内嵌在statefulset的yaml中的volumeClaimTemplates字段表示的。
  9. 滚动升级,pod中会定义策略strategy字段,用来指定应用升级的方式,比如滚动升级,共20个pod,每次杀掉的pod不能超过75%,必须留下25%的pod保证应用稳定运行,让前端客户感知不到升级。当机器资源足够时,我们可以先起升级的20个pod,确定可以运行之后再杀掉原来的20个pod,或者一部分一部分地升级,如果资源不够,就只能一次少升级几个pod,或者先杀掉pod,再升级。有状态应用的升级比较复杂,还需要考虑到pod之间的依赖关系,即使按照依赖关系进行升级,升级过程中也可能出现问题,比如前一个未执行完,就因为时间到了而被杀掉,或者被杀掉的pod还没完全启动,就已经跑到这个位置了,容易出现问题。
    10.怎么让应用运行得更健康? 可以限制pod能够申请的资源,通过resource字段,其中的requests和limits,可以写申请的资源和资源的上限。cpu一般用0.1之类的,memory一般用Ki、Mi、Gi 来表示 KB、MB、GB。还可以设置容器探针,Startup是启动探针,检查程序是否成功启动,Liveness是存活探针,用来检查应用是否正常运行,是否存在死锁、死循环。Readiness,就绪探针,用来检查应用是否可以接收流量,是否能够对外提供服务。另一种方法是对命名空间使用ResourceQuota这个api对象,来限制每个命名空间可占用的资源份额。

问题:
11. deployment部署的是服务pod,所以才有下面这张图是吗?是不是表示,deployment部署服务pod,然后service可以去代理对应标签的服务pod?所以daemonset部署的应该不是服务pod,而是监控的pod对吗?
在这里插入图片描述

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

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

相关文章

React 模态框的设计(一)拖动组件的设计

春节终结束了,忙得我头疼。终于有时间弄自己的东西了。今天来写一个关于拖动的实例讲解。先看效果: 这是一个简单的组件设计,如果用原生的js设计就很简单,但在React中有些事件必须要多考虑一些。这是一个系列的文章,…

UI设计中,2D、2.5D、3D、4D该如何辨别?教会你

hello,我是大千UI工场,从事UI设计8年之久,在日常工作中经常听到一些概念,现在将这些概念图文并茂的呈现给您,欢迎点赞评论,如有设计需求,可以私信我们。 在UI设计中,2D、2.5D、3D和4…

企业计算机服务器中了babyk勒索病毒怎么办?Babyk勒索病毒解密数据恢复

随着网络技术的应用与普及,越来越多的企业采用了数字化办公模式,数字化办公模式可以为企业提供强有力的数据支撑,可以为企业的发展方向与产品业务调整做好基础工作。但网络是一把双刃剑,在为企业提供便利的同时,也为企…

Visual Studio 打开.edmx文件不显示表并报错:没有可用于.edmx的编辑器

打开.edmx文件时,呈现的是xml视图,不显示Diagram视图,且弹出报错“没有可用于.edmx的编辑器” 解决方案:在.edmx文件上右键,选择ado.net entity data model designer,即可正常显示表

EasyRecovery2024数据恢复软件深度评测与使用教程

一、EasyRecovery数据恢复软件是否好用? EasyRecovery是一款业界知名的数据恢复软件,具有强大的恢复能力和广泛的数据兼容性。它能帮助用户从各种存储设备中恢复丢失或删除的数据,包括硬盘、U盘、SD卡等。以下是关于EasyRecovery的详细分析&…

《C++面向对象程序设计》✍学习笔记

C的学习重点 C 这块,重点需要学习的就是一些关键字、面向对象以及 STL 容器的知识,特别是 STL,还得研究下他们的一些源码,下面是一些比较重要的知识: 指针与引用的区别,C 与 C 的区别,struct 与…

25-k8s集群中-RBAC用户角色资源权限

一、RBAC概述 1,k8s集群的交互逻辑(简单了解) 我们通过k8s各组件架构,知道各个组件之间是使用https进行数据加密及交互的,那么同理,我们作为“使用”k8s的各种资源的使用者,也是通过https进行数…

ARMv8-AArch64 的异常处理模型详解之异常向量表vector tables

目录 一,AArch64 异常向量表 二,栈指针以及SP寄存器的选择 三,从异常返回 一,AArch64 异常向量表 异常向量表(vector tables)是一组存放于普通内存(normal memory)空间的&#xf…

【智能车入门:pcb版】(蓝牙遥控、超声波避障、红外循迹)

实现最简单的蓝牙遥控、超声波避障、红外循迹) 总览项目获取 本篇是对 上一篇博客的改进,上一篇博客使用面包板,看起来很乱,春节结束之后嘉立创免费打板恢复,板子到了之后进行焊接测试,相较于使用面包板&a…

【算法与数据结构】链表、哈希表、栈和队列、二叉树

目录 一、算法与数据结构 二、链表 三、哈希表 四、栈和队列 五、二叉树 一、算法与数据结构 算法和数据结构是计算机科学中两个非常重要的概念。 数据结构是组织和存储数据的方式,它定义了数据元素之间的关系和操作。数据结构可以分为线性结构(如…

【前端素材】推荐优质后台管理系统Welly平台模板(附源码)

一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

让程序员设计B端界面,好比武大郎招聘:向我看齐。不忍直视!

hello,我是大美B端工场,B端系统的要求越来越高了,很多公司还让程序员负责页面,页面搞的没法看,也怪不得程序员。程序员来搞页面,那还不是武大郎招聘——向我看齐,以我的标准为标准吗&#xff1f…

Spring Security学习(七)——父子AuthenticationManager(ProviderManager)

前言 《Spring Security学习(六)——配置多个Provider》有个很奇怪的现象,如果我们不添加DaoAuthenticationProvider到HttpSecurity中,似乎也能够达到类似的效果。那我们为什么要多此一举呢?从文章的效果来看确实是多…

C++的STL常用算法->常用遍历算法、常用查找算法、常用排序算法、常用拷贝和替换算法、常用算术生成算法、常用集合算法

#include<iostream> using namespace std; #include <algorithm> #include <vector> //常用遍历算法 for_each //普通函数 void print01(int val) { cout << val << " "; } //仿函数 //函数对象 class print02 { public: v…

go语言的理解,看这一篇就够了

1.来源 Go语言是谷歌2009年发布的第二款开源编程语言 2.谷歌为什么要创建Go语言 计算机硬件技术更新频繁, 性能提高很快,默目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个简洁而高效…

备考2024年汉字小达人:历年考题练一练-18道选择题

今天为大家分享汉字小达人的备考学习资源&#xff0c;通过参加没有报名费、人人可参加的汉字小达人比赛&#xff0c;激发孩子学习语文的兴趣&#xff0c;并且提升语文学习成绩。 汉字小达人的两轮比赛&#xff08;区级自由报名活动、市级活动&#xff09;的选择题主要有六种题型…

Unity(第三部)新手绘制地形

1、创建地形 游戏对象3d对象地形 2、功能 1、 红框内按键为创建相邻地形、点击后相近地形会呈现高亮框、点击高亮区域可以快速创建地形 每块地形面积是1km*1km 2、第二个按钮是修改地形 下面的选择是修改类型 选项含义描述Raise or Lower Terrain升高或降低地形单击左键可…

备战蓝桥杯————双指针技巧巧解数组3

利用双指针技巧来解决七道与数组相关的题目。 两数之和 II - 输入有序数组&#xff1a; 给定一个按升序排列的数组&#xff0c;找到两个数使它们的和等于目标值。可以使用双指针技巧&#xff0c;在数组两端设置左右指针&#xff0c;根据两数之和与目标值的大小关系移动指针。 …

Python中的functools模块详解

大家好&#xff0c;我是海鸽。 函数被定义为一段代码&#xff0c;它接受参数&#xff0c;充当输入&#xff0c;执行涉及这些输入的一些处理&#xff0c;并根据处理返回一个值&#xff08;输出&#xff09;。当一个函数将另一个函数作为输入或返回另一个函数作为输出时&#xf…

mapbox初体验

mapbox 初体验 简介导入 CDN 链接创建地图实例注册 token设置地图基本属性地图显示 1. 简介 我们将使用Mapbox GL JavaScript库创建地图的 HTML 示例。Mapbox GL是一个用于构建现代 Web 地图的开源库&#xff0c;提供了丰富的地图功能和自定义性。 2. 导入 CDN 链接 首先&…