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对吗?
在这里插入图片描述

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

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

相关文章

【蓝桥杯】拓扑排序

一.拓扑排序 1.定义: 设G(V,E)是一个具有n个顶点的有向图,V中的顶点序列称为一个拓扑序列,当且仅当满足下列条件:若从顶点到有一条路径,则在顶点序列中顶点必在之前。 2.基本思想…

Vue+SpringBoot打造音乐偏好度推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1.2 我的喜好模块2.1.3 每日推荐模块2.1.4 通知公告模块 2.2 用例图设计2.3 实体类设计2.4 数据库设计 三、系统展示3.1 登录注册3.2 音乐档案模块3.3 音乐每日推荐模块3.4 通知公告模…

【安装】CentOS 7 使用 OUI 图形界面安装 Oracle Database 19.3

需安装使用 X Server 协议的软件(如 Xorg)和如桌面图形软件(Gnome 或 KDE)。 使用 root 用户执行: # curl -o oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/l…

istio系列教程

istio学习记录——安装https://suxueit.com/article_detail/otVbfI0BWZdDRfKqvP3Gistio学习记录——体验bookinfo及可视化观测https://suxueit.com/article_detail/o9VdfI0BWZdDRfKqlv0r istio学习记录——kiali介绍https://suxueit.com/article_detail/pNVbfY0BWZdDRfKqX_0K …

在Node.js中如何实现用户身份验证和授权

当涉及到构建安全的应用程序时,用户身份验证和授权是至关重要的一环。在Node.js中,我们可以利用一些流行的库和技术来实现这些功能,确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

“激发无限创意:在线图片制作,点亮你的视觉灵感!“

在数字时代,图片已经成为我们表达创意、分享故事和展示个性的重要方式。然而,你是否曾因为缺乏专业的设计技能或繁琐的制作流程而感到困扰?现在,有了在线图片制作平台,释放你的创意灵感变得前所未有的简单和方便&#…

福特锐界2021plus 汽车保养手册

福特锐界2021plus汽车保养手册两页,零部件保养要求,电子版放这里方便查询:

8-pytorch-损失函数与反向传播

b站小土堆pytorch教程学习笔记 根据loss更新模型参数 1.计算实际输出与目标之间的差距 2.为我们更新输出提供一定的依据(反向传播) 1 MSEloss import torch from torch.nn import L1Loss from torch import nninputstorch.tensor([1,2,3],dtypetorch.fl…

MySQL——基础内容

目录 第01章_数据库概述 关系型数据库(RDBMS)——表、关系模型 非关系型数据库(非RDBMS) 表、记录、字段 表的关联关系 一对一关联 一对多关系 多对多 自我引用 第02章_MySQL环境搭建 登录命令 常用命令 show databases; create database use 数据库名 show tables 第03章…

五种多目标优化算法(MOCS、MOFA、NSWOA、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤: 1. 定义问题:首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数,这些目标函数可能…

云原生之容器编排实践-kubectl get pod -A没有coredns

背景 前面搭建的3节点 Kubernetes 集群,其实少了一个组件: CoreDNS ,这也是我后面拿 ruoyi-cloud 项目练手时,部署了 MySQL 和 Nacos 服务后才意识到的:发现Nacos无法通过服务名连接MySQL,这里 Nacos 选择…

Mac OS 搭建C++开发环境【已解决】

Mac OS 搭建C开发环境 文章目录 Mac OS 搭建C开发环境一、安装命令行工具:二、安装vscode三、安装gcc3.1 安装Homebrew3.2 安装gcc3.3 修改配置 四、更改VSCode默认编译器五、安装gdb六、安装Cmake && git七、编译运行 本地环境: Mac OS Sonoma …

Python中回调函数的理解与应用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 前言 回调函数的概念 回调函数的基本用法 回调函数的实现方式 1 使用函数 2 使用类方法 3 使用类实…

QWidget: Must construct a QApplication before a QWidget 13:25:48: 程序异常结束。

QWidget: Must construct a QApplication before a QWidget 13:25:48: 程序异常结束。 你的插件是release,而你用了debug模式、

一元函数微分学——刷题(19

目录 1.题目:2.解题思路和步骤:3.总结:小结: 1.题目: 2.解题思路和步骤: 题目给的是个复合函数,因此需要根据复合函数求得原本f’(x)的表达式: 3.总结: 题目给的是个…

Java EE改名Jakarta EE,jakarta对程序开发的影响

一、前言 很多Java程序员在使用新版本的Spring6或者springboot3版本的时候,发现了一些叫jakarta的包。我在阅读开源工作流引擎camunda源代码的时候,也发展了大量jakarta的工程包。 比如:camunda的webapps编译工程就提供了2种方式javax和jaka…

linux系统---httpd

目录 Internet的起源 一、http协议——超文本传输协议 1.http相关概念 二、HTTP请求访问的完整过程 1、 建立连接 2、 接收请求 3、 处理请求 常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS 3.1 常见的HTTP方法 3.2 GET和POST比较 4、访问资源 …

【YOLO系列算法人员摔倒检测】

YOLO系列算法人员摔倒检测 模型和数据集下载YOLO系列算法的人员摔倒检测数据集可视化数据集图像示例: 模型和数据集下载 yolo行人跌倒检测一: 1、训练好的行人跌倒检测权重以及PR曲线,loss曲线等等,map达90%多,在行人跌…

黑马程序员——接口测试——day02

目录: Postman基础使用 简介和安装案例一:案例二:案例三:接口用例设计 接口测试的测试点 功能测试性能测试安全测试接口用例设计方法 单接口测试业务场景测试单接口测试用例 模版分析测试点 登录添加员工查询员工业务场景测试用例…

操作系统-复试笔记

http://t.csdnimg.cn/PJLWh 操作系统基础 什么是操作系统? 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 ,用于…