当前位置: 首页 > news >正文

K8s-控制器

一 为什么使用控制器

pod控制器

作用:1.pod类型资源删除,不会重建
           2.控制器可以帮助用户监控,并保证节点上运行定义好的pod副本数
           3.pod超过或低于用户期望,控制器会创建、删除pod副本数量

控制器类型:

  1. RS控制器:按照用户期望的副本数量,创建pod, 用户写yaml,定义RS控制器,去定义pod模板,pod按照这个模板去运行
  2. deployment控制器
  3. DaemonSet

二 详解rs控制器原理

RS控制器原理:副本数保障、标签选择器

2.1 创建RS控制器

[root@k8s-master ~]# cat rs-nginx.yml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: nginx-rsnamespace: lxyspec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:name: nginx-podlabels:app: nginxspec:containers:- name: nginx-containersimage: nginx:1.14.0imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80
kubectl create -f rs-nginx.yml 
kubectl -n lxy get rs -owide
kubectl -n lxy get pods -l app=nginx -owide

 

2.2 删除Pod,查看rs如何保障副本数 

删掉一个pod,但是会马上创建一个

2.3 pod和rs关系 

kubectl -n lxy describe rs nginx-rs 

2.4 修改RS控制器

1.对yaml修改副本数,修改资源配置:kubectl apply -f rs-nginx.yml

2.编辑RS控制器:kubectl -n lxy edit rs nginx-rs  (有些是无法修改)

三 Deploy控制器与弹性扩缩容

kubectl scale --help

kubectl -n lxy scale --replicas=X rs nginx-rs 

root@k8s-master ~]# kubectl -n lxy get pods -owide
NAME             READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
nginx-2          1/1     Running   2          5d17h   10.2.20.143   k8s-node13   <none>           <none>
nginx-rs-2zhzn   1/1     Running   0          7h25m   10.2.231.96   k8s-node12   <none>           <none>
nginx-rs-7p64w   1/1     Running   0          7h25m   10.2.20.146   k8s-node13   <none>           <none>
[root@k8s-master ~]# kubectl -n lxy scale --replicas=4 rs nginx-rs 
replicaset.apps/nginx-rs scaled
[root@k8s-master ~]# kubectl -n lxy get pods -owide
NAME             READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
nginx-2          1/1     Running   2          5d17h   10.2.20.143   k8s-node13   <none>           <none>
nginx-rs-2zhzn   1/1     Running   0          7h34m   10.2.231.96   k8s-node12   <none>           <none>
nginx-rs-7p64w   1/1     Running   0          7h34m   10.2.20.146   k8s-node13   <none>           <none>
nginx-rs-8jf8p   1/1     Running   0          4s      10.2.20.150   k8s-node13   <none>           <none>
nginx-rs-k9dvr   1/1     Running   0          4s      10.2.20.149   k8s-node13   <none>           <none>
[root@k8s-master ~]# kubectl -n lxy scale --replicas=2 rs nginx-rs 
replicaset.apps/nginx-rs scaled
[root@k8s-master ~]# kubectl -n lxy get pods -owide
NAME             READY   STATUS        RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
nginx-2          1/1     Running       2          5d17h   10.2.20.143   k8s-node13   <none>           <none>
nginx-rs-2zhzn   1/1     Running       0          7h34m   10.2.231.96   k8s-node12   <none>           <none>
nginx-rs-7p64w   1/1     Running       0          7h34m   10.2.20.146   k8s-node13   <none>           <none>
nginx-rs-8jf8p   0/1     Terminating   0          12s     10.2.20.150   k8s-node13   <none>           <none>
nginx-rs-k9dvr   0/1     Terminating   0          12s     10.2.20.149   k8s-node13   <none>           <none>

获取当前rs资源的Yaml: kubectl -n lxy get rs nginx-rs -oyaml

四 Deploy与rs原理

Deployments | Kubernetes

kubectl -n kube-system get deploy coredns -o yaml

[root@k8s-master ~]# cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: lxy
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80resources:limits:cpu: 100mmemory: 200Mirequests:cpu: 100mmemory: 200Mi
[root@k8s-master ~]# kubectl get deployments.apps -owide -n lxy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE    CONTAINERS   IMAGES         SELECTOR
nginx-deployment   2/2     2            2           110s   nginx        nginx:1.14.2   app=nginx
[root@k8s-master ~]# kubectl get rs -n lxy
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-58df99679c   2         2         2       115s
nginx-rs                      2         2         2       8h
[root@k8s-master ~]# kubectl get pods -l app=nginx -n lxy
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-58df99679c-tqxps   1/1     Running   0          119s
nginx-deployment-58df99679c-zhvcj   1/1     Running   0          119s
nginx-rs-2zhzn                      1/1     Running   0          8h
nginx-rs-7p64w                      1/1     Running   0          8h

pod和rs和deployment关系
kubectl describe pods nginx-deployment-AAA-XX
kubectl describe rs nginx-deployment-AAA 

五 滚动更新详解原理

蓝绿更新:起一个新的Pod+删除一个旧pod,接替就是滚动更新

六 更新镜像版本其他玩法

1.kubectl edit rs资源
2.
kubectl  scale  --replicas=xxx   rs  rs名
3.edit 编辑deployment资源
4.deployment提供了 修改镜像版本 参数   kubectl  set image

七 版本更新与回滚详解

因为rs控制器还在,数据还在 kubectl get rs -owide -w / kubectl get rs -owide -n lxy

#查看版本是1.14.2
kubectl get deployments.apps -n lxy -owide
#修改版本为1.14.1
kubectl -n lxy set image deployment nginx-deployment nginx=nginx:1.14.1
#这时候在查看是1.14.1,使用命令回归后,恢复成1.14.2
kubectl rollout undo deployment nginx-deployment -n lxy

八 详解版本记录号玩法

1.kubectl create -f last-deploy-nginx.yml --record    ----创建的时候,记录版本号

2.查看deploy版本信息

kubectl rollout history deployment  last-nginx-deployment 

kubectl rollout status  deployment  last-nginx-deployment 

kubectl rollout history deployment last-nginx-deployment --revision=2(指定那个版本的镜像信息)

3.指定回滚到哪个版本

kubectl rollout undo  deployment last-nginx-deployment --to-revision=1

相关文章:

K8s-控制器

一 为什么使用控制器 pod控制器 作用&#xff1a;1.pod类型资源删除&#xff0c;不会重建 2.控制器可以帮助用户监控&#xff0c;并保证节点上运行定义好的pod副本数 3.pod超过或低于用户期望&#xff0c;控制器会创建、删除pod副本数量 控制器类型&am…...

Meta 发布 LLAMA 3.1;特斯拉无人出租车推迟至 10 月;谷歌将向 Waymo 再投 50 亿美元

先瞧一下 Chat 和 Agent 的差异。 Chat&#xff08;聊天&#xff09;&#xff1a;纯粹的 Chat&#xff0c;宛如一个主要由“大脑与嘴”组成的智能体&#xff0c;着重于信息处置和语言沟通。诸如 ChatGPT 这般的系统&#xff0c;其能够领会用户的询问&#xff0c;给出有益且连贯…...

C 语言基础概念总结

C 语言基础概念总结 一、数据类型 目录 C 语言基础概念总结 一、数据类型 基本数据类型 构造数据类型 二、变量与常量 三、运算符与表达式 算术运算符 关系运算符 逻辑运算符 赋值运算符 自增自减运算符 四、控制流语句 顺序结构 选择结构 循环结构 五、函数 …...

Django教程(000):初识Django

Django 是一个高级 Python Web 框架,旨在快速开发、简洁、实用。Django 提供了众多内置功能,使得开发者可以专注于编写应用程序的业务逻辑,而不需要过多关注底层细节。以下是 Django 的详细介绍: 1. Django 简介 Django 是一个开放源代码的 Web 框架,由 Python 编写,最…...

SQLynx数据库管理工具

背景&#xff1a;业主对网络安全要求比较高&#xff0c;不提供VPN等远程工具&#xff0c;也不能开放3306端口到互联网。那怎么样运维数据库就是个难题&#xff1f;找到了SQLynx这个可以网页访问的数据库管理工具&#xff0c;给大家分享一下。 1.介绍 SQLynx原名SQL Studio&…...

Java基础06:变量,常量,作用域(狂神说Java)

一.变量 有了static&#xff0c;即类变量&#xff0c;就可以不用new了可以直接调用&#xff0c;类变量之后再细讲 二.常量 三.变量的命名规范...

inflight 守恒建模

去上海博物馆参观古埃及文物展&#xff0c;人太多&#xff0c;体验很差&#xff0c;我可以当讲解员的&#xff0c;但没人听&#xff0c;都只为拍照发圈。 平心而论&#xff0c;老家殷墟可与之一战&#xff0c;建议将殷墟交给国家运营&#xff0c;而不是一个地级市文旅。 无心…...

HarmonyOS NEXT星河版零基础入门到实战

文章目录 一、HarmonyOS NEXT介绍学习内容1、鸿蒙APP开发2、能力套件开发3、全场景开发适合人群 持续更新中✒️总结 一、HarmonyOS NEXT介绍 放弃安卓框架之后&#xff0c;HarmonyOS NEXT成为真正独立于安卓、iOS的操作系统&#xff0c;堪称是一场史无前例的脱胎换骨。在其众多…...

测试开发面试题---JVM

JAVA的内存区域 程序计数器&#xff1a;线程私有的&#xff0c;保存当前线程的字节码文件。JAVA虚拟机栈&#xff1a;包含局部变量信息&#xff0c;用于方法的调用和执行。本地方法栈&#xff1a;与JAVA虚拟机栈类似&#xff0c;但只服务于本地方法。堆&#xff1a;所有线程共…...

python库 - jsonpath

JSONPath 是一种用于从 JSON 数据中提取数据的查询语言&#xff0c;类似于 XML 中的 XPath。它允许通过路径表达式来导航和查询 JSON 结构中的数据。JSONPath 在处理 API 响应、配置文件和复杂数据结构时非常有用。 以下是一些常用的 JSONPath 表达式及其功能&#xff1a; $&…...

[RK3588][Android12] Android->OTA包超过4个G导致打包失败

测试平台 Platform: RK3588 OS: Android12 问题说明&#xff1a; 有的客户需要往系统中内置大量apk&#xff0c;这样就导致最终打包的OTA包超过4个G&#xff0c;从而导致打包OTA的时候报错&#xff1a;Zipfile size would require ZIP64 extensions 解决方法&#xff1a; 可能…...

(雷达数据处理中的)跟踪算法(3) – 可用于目标跟踪实践的数据集介绍解析

说明 本博文作为跟踪算法系列博文的第3篇&#xff0c;对可用于目标跟踪的一份数据集进行了介绍&#xff0c;本文介绍的这份数据集将用于后续博文的目标跟踪实践。读者在阅读本博文前&#xff0c;建议先看看本系列的第一篇博文[1]&#xff1a;&#xff08;雷达数据处理中的)跟踪…...

【C语言报错已解决】Use of Uninitialized Variable

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言&#xff1a; 在编程中&#xff0c;未初始化的变量是一个常见的问题&#xff0c;它可能导致程序的行为变得不可预测。未初…...

3 Go语言的变量声明

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;由浅入深讲解Go语言&#xff0c;希望大家都能够从中有所收获&#xff0c;也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;大家一起学习&#xff0c;…...

PyMySQL库的使用方法

过程和步骤&#xff1a; 安装 PyMySQL 首先&#xff0c;需要使用 pip 安装 PyMySQL 库&#xff1a; pip install pymysql连接数据库 使用 PyMySQL.connect() 方法可以建立到 MySQL 数据库的连接&#xff1a; import pymysql# 配置数据库连接参数 config {host: localhost…...

iOS 创建一个私有的 CocoaPods 库

创建一个私有的 CocoaPods 库&#xff08;pod&#xff09;涉及几个步骤&#xff0c;包括设置私有的 Git 仓库、创建 Podspec 文件、发布到私有仓库等等。以下是详细步骤&#xff1a; 设置私有 Git 仓库 首先&#xff0c;在 GitHub、GitLab 或 Bitbucket 上创建一个新的私有仓库…...

Linux_实现UDP网络通信

目录 1、实现服务器的逻辑 1.1 socket 1.2 bind 1.3 recvfrom 1.4 sendto 1.5 服务器代码 2、实现客户端的逻辑 2.1 客户端代码 3、实现通信 结语 前言&#xff1a; 在Linux下&#xff0c;实现传输层协议为UDP的套接字进行网络通信&#xff0c;网络层协议为IPv4&am…...

C# 代理模式

栏目总目录 概念 代理模式是一种结构型设计模式&#xff0c;它为其他对象提供一种代理以控制对这个对象的访问。在代理模式中&#xff0c;我们创建一个具有现有对象&#xff08;称为“真实对象”或“被代理对象”&#xff09;相同功能的代理对象。代理对象可以在客户端和目标对…...

【1】Python机器学习之基础概念

1、什么是机器学习 最早的机器学习应用——垃圾邮件分辨 传统的计算机解决问题思路&#xff1a; 编写规则&#xff0c;定义“垃圾邮件”&#xff0c;让计算机执行对于很多问题&#xff0c;规则很难定义规则不断变化 机器学习在图像识别领域的重要应用&#xff1a; 人脸识别…...

HashMap源码解析

目录 一:put方法流程 二&#xff1a;get方法 三&#xff1a;扩容机制 一&#xff1a;put方法流程 public V put(K key, V value) {return putVal(hash(key), key, value, false, true); }final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {No…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...