k8s-基础知识(Pod,Deployment,ReplicaSet)
k8s职责
- 自动化容器部署和复制
- 随时扩展或收缩容器
- 容器分组group,并且提供容器间的负载均衡
- 实时监控,即时故障发现,自动替换
k8s概念及架构
pod
pod是容器的容器,可以包含多个container
pod是k8s最小可部署单元,容器的本质是一个隔离的进程,而Pod则是一组相互联系的进程(进程组)。Pod 内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
pod内部容器网络互通,每个pod都有独立虚拟IP。
pod都是部署完整的应用或模块(项目中通常:一个pod部署一个应用,或部署一个应用的一部分)。
#获取节点
kubectl get pods
#通过kubectl 运行一节点
kubectl run nginx-pod --image=nginx
#查看详细信息
kubectl describe pod nginx-pod
#查看拓展信息 可以看到IP等信息
kubectl get pods -o wide
提醒:官方不退年使用kubectl 命令来创建pod,推荐使用yml的方式来创建pod
YAML 方式创建POD
apiVersion: v1
kind: Pod
metadata:name: demo-podlabels: app: demonginxtype: nginxservice
spec:containers:- name: nginximage: nginx
#创建并启动pod 下面两个命令是一样的效果
kubectl create -f pod-ngix.yml
kubectl apply -f pod-ngix.yml
#停止pod
kubectl delete -f pod-ngix.yml
字段说明
apiVersion:API版本号。根据创建的内容,必须使用正确的API版本,不同版本号支持的功能可能不太一样。V1, app/V1beta,extensions/V1beta,等等
kind:资源类型,类型指的是创建的对象的类型,其他可能的值 Pod, Service, ReplicaSet, Deployment.
metadata:用来描述这个pod的元信息,比如名称和标签。有了这个元信息,我们区分这个pod,方便众多pod进行筛选。比如我们可以pod标识为前端应用,后端应用,数据库,中间件等。
spec: 其中container是一个数组,因为pod中可以有多个容器,名字前面的破折号表示这是列表中的第一个项目。列表中的每一个元素又是一个字典,所以要添加一个名称和image属性。image的值是nginx,这是docker仓库中的docker镜像。
ReplicationController
Pod 可以通过控制器来管理。它可以监测Kubernetes对象并及时反应,有下面这两个应用场景:
1 保证高可用,比如一个节点挂掉了,控制器会监测到会立即开启一个新的节点继续提供服务。
2 负载均衡,比如我们需要一个服务维持在3个节点以负载均衡。那么比如我们一个节点所在的宿主机的资源耗尽了,这个时候控制器可以调度在集群的其它机器上再创建一个节点,始终保持这个服务有三个节点来提供服务。
apiVersion: v1
kind: ReplicationController
metadata:name: demo-rclabels: app: demonginxtype: nginxservice
spec:template:metadata:name: ningx-podlabels: app: nginxappspec:containers:- name: nginximage: nginxreplicas: 3
可以看到和前面的yml非常的类似,只是这次我们在spec定义了一个模板,这个模板就是比如我们一个节点挂掉了,这个时候控制器可以用这个模板来创建副本。同时replicas制定了节点数量为三个。
提醒:这里有个现象,比如你之前用命令行创建了一个pod,然后pod的标签和使用rc的一样,你会发现rc在启动的时候会直接把这个节点拿过来直接使用,也就是实际上只创建了两个节点
ReplicaSet
ReplicaSet与ReplicationController非常相似。ReplicaSet则相当于ReplicationController的升级版,它的作用也是控制pod的数量始终维持在预设的个数。
apiVersion: apps/v1 #注意需要使用这个版本
kind: ReplicaSet
metadata:name: demo-rclabels: app: demonginxtype: nginxservice
spec:template:metadata:name: ningx-podlabels: app: nginxapptype: nginxservice #注意下面 selector 指定的matchLabels 要和这里的labels来对应spec:containers:- name: nginximage: nginxreplicas: 3selector: matchLabels:#这个是指定使用那个标签的服务 比如之前有一个服务标签叫这个 会直接拿过来用 和ReplicationController 一样 只是 ReplicationController不显示的定义,默认与pod定义文件中提供的标签相同type: nginxservice
#查看replicaset
kubectl get replicaset
#查看详细信息
kubectl describe replicaset demo-rs
扩容
使用下面命令:
kubectl scale replicaset myapp-rs --replicas=6
#修改命令 直接修改配置yml文件 修改以后k8会响应变化 demo-rc为replicaset名称
kubectl edit rs demo-rc
Deployment
官方推荐不要直接使用ReplicaSet,用Deployments。Deployment可以通过selector来匹配labels字段,过滤出它所关心的被控制对象。
Deployment不直接管理Pod对象,而是由Deployment管理ReplicaSet,再由ReplicaSet负责管理Pod对象。
Deployment为我们提供了使用滚动更新无缝升级底层实例的能力,e.g.撤销变化,暂停,并根据需要恢复变化。
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deploymentlabels: app: myapptype: myservice
spec:selector: matchLabels:type: myservicereplicas: 3template:metadata:name: myapp-podlabels: app: myapptype: myservicespec:containers:- name: nginximage: nginx
#查看
kubectl get deployments
#查看所有资源
kubectl get all
kubectl describe deploy demo-deploy
滚动更新与回滚
kubectl create -f myapp-deploy.yml --record #通过--record 执行以后就可以看到history里面多了一条 记录
#我们可以看到滚动更新的日志
kubectl edit deployment myapp-deployment --record && kubectl rollout status deployment/myapp-deployment
#在执行一次镜像修改
kubectl set image deployment myapp-deployment nginx=nginx:perl --record && kubectl rollout status deployment/myapp-deployment
kubectl describe pod myapp-deployment-f5b5cdd5-22278
我们可以看到镜像已经变成了perl
接着我们做一次回滚
kubectl rollout undo deployment/myapp-deployment
可以看到就是把1拿过来重新执行一遍:
deployment 可以简写为deploy ,我们可以通过kubectl api-resources 这个命令来查看
这里有那些命令可以简写,简写成什么,对应的版本是什么
多容器Pod
微服务架构允许我们根据需要使用需要扩展、缩减以及修改每个服务, 而不是修改整个应用程序。
有时可能需要两个服务一起工作,例如Web服务器和日志记录服务。每个Web服务器实例都需要一个日志收集代理一组。但是二者具有独立的代码库,单独开发和部署。
- 共享同一Pod生命周期, 一起创建和销毁。
- 共享相同的网络空间,可以通过localhost相互访问,
- 共享存储卷。
pod yaml文件中spec部分下的container部分是一个数组,允许一个pod中有多个container
apiVersion: v1
kind: Pod
metadata:name: myapp-podlabels: app: myapptype: myservice
spec:containers: #这里指定了多个容器- name: nginximage: nginx- name: log-agentimage: log-agent
相关文章:

k8s-基础知识(Pod,Deployment,ReplicaSet)
k8s职责 自动化容器部署和复制随时扩展或收缩容器容器分组group,并且提供容器间的负载均衡实时监控,即时故障发现,自动替换 k8s概念及架构 pod pod是容器的容器,可以包含多个container pod是k8s最小可部署单元,容器…...
matlab查看源代码
matlab函数源代码-查看 CtrlD 最简单方便的一种方法,鼠标划中函数名,按CTRLD即可打开函数的m文件...
【数据库学习】PostgreSQL优化
1,思路 2,执行计划 explain sql语句; #查看执行计划。也可以使用navicat的解释功能查看。结果说明: QUERY PLAN Index Scan using tenk1_unique1 on tenk1 (cost0.00..10.01 rows1 width244) --Index 使用索引 --cost&#x…...
微信小程序分页加载功能,结合后端实现上拉底部加载下一页数据,数据加载中和暂无数据提示
🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回&#…...

idea 打包跳过测试
IDEA操作 点击蓝色的小球 手动命令 mvn clean package -Dmaven.test.skiptrue...
python sqlite3 线程池封装
1. 封装 sqlite3 1.1. 依赖包引入 # -*- coding: utf-8 -*- #import os import sys import datetime import loggingimport sqlite31.2. 封装类 class SqliteTool(object):#def __init__(self, host, port, user, password, database):def __init__(self, host, database):s…...

亚马逊运营:如何通过自养号测评有效防关联,避免砍单
店铺安全对于跨境电商卖家至关重要,它是我们业务稳定运营的基础。一旦店铺遭到亚马逊的封禁,往往意味着巨大的损失。因此,合规运营已经成为了卖家们的共识。然而,许多卖家可能会因为一些看似微小的失误,导致店铺被关联…...

winfrom图像加速渲染时图像不显示
winform中加入这段代码,即使不调用也会起作用;当图像不显示时,可以注释掉这段代码...

Redash 默认key漏洞(CVE-2021-41192)复现
Redash是以色列Redash公司的一套数据整合分析解决方案。该产品支持数据整合、数据可视化、查询编辑和数据共享等。 Redash 10.0.0及之前版本存在安全漏洞,攻击者可利用该漏洞来使用已知的默认值伪造会话。 1.漏洞级别 中危 2.漏洞搜索 fofa "redash"…...
Git学习笔记:3 git tag命令
文章目录 git tag 基本用法1. 创建标签2. 查看标签3. 删除标签4. 推送标签到远程仓库5. 检出标签 普通提交和标签的区别1. 提交(Commit)2. 标签(Tag) git tag 基本用法 git tag 是 Git 中用于管理和操作标签(tag&…...

10年软件测试经验,该有什么新的职业规划?
个人觉得,最关键是识别个人的兴趣和长期目标,以及市场需求,制定符合自己职业发展的规划,列了几个常见的方向: 1. 技术深化 专业领域专长:在某一测试领域(如自动化测试、性能测试、安全测试等&am…...

重构改善既有代码的设计-学习(四):简化条件逻辑
1、分解条件表达式(Decompose Conditional) 可以将大块代码分解为多个独立的函数,根据每个小块代码的用途,为分解而得的新函数命名。对于条件逻辑,将每个分支条件分解成新函数还可以带来更多好处:可以突出条…...
【代码---利用一个小程序,读取文件夹中图片,将其合成为一个视频】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言程序详细说明总结 前言 提示:这里可以添加本文要记录的大概内容: 创建一个程序将图像合成为视频通常需要使用图像处理和视频编码库。 …...
MVC 和 MVVM的区别
MVC: M(model数据)、V(view视图),C(controlle控制器) 缺点是前后端无法独立开发,必须等后端接口做好了才可以往下走; 前端没有自己的数据中心,太…...

redis—Set集合
目录 前言 1.常见命令 2.使用场景 前言 集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中1)元素之间是无序的2)元素不允许重复,如图2-24所示。一个集合中最多可以存储22 - 1个元素。Redis 除了支持集合内的增删查改操…...

【jetson笔记】vscode远程调试
vscode安装插件 vscode安装远程插件Remote-SSH 安装完毕点击左侧远程资源管理器 打开SSH配置文件 添加如下内容,Hostname为jetson IP,User为登录用户名需替换为自己的 Host aliasHostName 192.168.219.57User jetson配置好点击连接,控制台输…...
大数据处理流程包括哪些环节
大数据处理流程作为当今信息时代的关键技术之一,已经成为各个行业的必备工具。这个流程涵盖了从数据收集、存储、处理、分析到应用的各个环节,确保了数据的有效利用和价值的最大化。 一、数据收集 随着物联网、移动互联网、社交媒体等领域的快速发展&a…...

C++入门篇章1(C++是如何解决C语言不能解决的问题的)
目录 1.C关键字(以C98为例)2.命名空间2.1 命名空间定义2.2命名空间使用 3.C输入&输出4.缺省参数4.1缺省参数概念4.2 缺省参数分类 5. 函数重载5.1函数重载概念5.2 C支持函数重载的原理--名字修饰(name Mangling) 1.C关键字(以C98为例) C总计63个关键字,C语言32…...

java复习篇 数据结构:链表第一节
目录 单向链表 初始 头插 思路 情况一 情况二 代码 尾插 思路 遍历 优化遍历 遍历验证头插 尾插代码 优化 尾插测试 get 思路 代码 测试 insert 思路 代码 优化 测试 remove 移除头结点 提问 移除指定位置 测试 单向链表 每个元素只知道自己的下一个…...
深入理解与运用Lombok的@Cleanup注解:自动化资源管理利器
前言 在Java编程中,正确地管理和释放诸如文件流、数据库连接等资源至关重要。若处理不当,可能会引发内存泄漏或系统资源耗尽等问题。为此,Lombok库提供了一个名为Cleanup的便捷注解,它允许我们以简洁且安全的方式自动关闭实现了j…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...