kubectl 资源管理命令-陈述式
目录
一、kubectl陈述式资源管理:
二、kubectl陈述式对象管理:
1.基础命令使用:
1.1 帮助手册:
1.2 查看版本信息:
编辑
1.3 查看资源对象简写:
1.4 查看集群信息:
1.5 配置kubectl自动补全:
1.6 node节点查看日志:
2.基本信息查看:
2.1基本格式:
编辑
2.2 查看 master 节点状态:
2.3 查看命名空间:
2.4 查看资源信息:
3. 创建删除:
注意:
4. 登录pod中的容器:
5. 扩缩容pod控制器的pod:
6.更改
三、创建项目实例:
1. 创建 :
2. 发布:
2.1 service 的 type 类型:
3. 更新:
3.1 查看当前 nginx 的版本号:
3.2 更新版本:
3.3 滚动更新详解:
4. 回滚:
编辑
5. 删除:
四、应用发布:
1. 发布策略:
2. 金丝雀发布:
3. 发布示例:
3.1 更新deployment的版本,并配置暂停deployment:
3.2 监控更新的过程:
3.3 确保更新的pod没问题了,继续更新:
3.4 查看最后的更新情况:
编辑
编辑
一、kubectl陈述式资源管理:
- kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
- kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
二、kubectl陈述式对象管理:
1.基础命令使用:
1.1 帮助手册:
kubectl --help
1.2 查看版本信息:
kubectl version
1.3 查看资源对象简写:
kubectl api-resources
1.4 查看集群信息:
kubectl cluster-info
1.5 配置kubectl自动补全:
source <(kubectl completion bash) ##当前bash自动补全
或vim /etc/bashrc ##永久自动补全
...
source <(kubectl completion bash)
source /etc/bashrc
1.6 node节点查看日志:
journalctl -u kubelet -f
2.基本信息查看:
2.1基本格式:
kubectl get <resource> [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n 指定命令空间,-o 指定输出格式
resource可以是具体资源名称,如pod nginx-xxx;也可以是资源类型,如pod;或者all(仅展示几种核心资源,并不完整)-o wide|json|yaml 查看详细信息|json格式查看|yaml格式查看
2.2 查看 master 节点状态:
kubectl get componentstatuses
kubectl get cs
2.3 查看命名空间:
kubectl get namespace
kubectl get ns
//命令空间的作用:用于允许不同 命名空间 的 相同类型 的资源 重名的
2.4 查看资源信息:
#查看命名空间的所有资源
kubectl get all [-n default]
-n 指定命名空间#查看pod资源
kubectl get pods -n kube-system#查看node节点集群的信息
kubectl get nodes#查看deployment的pod控制器
kubectl get deployment#查看service信息
kebectl get svc查看pod日志
kubectl logs nginx-cdb6b5b95-fjm2x查看pod重启前日志
kubectl logs nginx-cdb6b5b95-fjm2x -p
常用命令参数总结
-n 指定命名空间
-owide 查看命名空间的pod详细信息
-A 查看pod所有资源
--show-labels 查看pod标签信息
-l app 仅显示标签为app的资源
-l app=nginx 仅显示包含app标签,且值为nginx的资源
3. 创建删除:
注意:
- 创建pod资源分为两种,一种为 自主式pod ,一种为 控制器pod
- 自主式pod 创建无法指定副本数量,当pod挂掉后,不会进行重建,可直接删除。
- 控制器pod 创建可以设置副本数量,且当pod挂掉后,pod控制器会重新创建,要想删除只能删除pod控制器。
kubectl create ns kube-wzw
#创建命名空间kube-wzwkubectl delete ns kube-wzw
#删除命名空间kube-wzwkubectl create deployment nginx --image=nginx --port=80 --replicas=2 -n kube-wzw
#在命名空间kube-wzw创建副本控制器(deployment)来启动pod,并创建2个副本(pod名称它会随机)
//删除它只能删除的pod控制器,删除控制器后,pod控制器下面的所有pod都会删除
###注意!!!!pod控制器,不能单独创建,基本是和创建pod一起制定创建pod控制器。kubectl run nginx-wl2 --image=nginx -n kube-wzw
#直接创建自主式pod(挂掉后不会重建,没有pod控制器)
//可以直接删除这个pod,它没有pod控制器kubectl describe deployment nginx -n kube-wzw
#查看nginx-ydq的pod控制器的详细信息,kubectl describe pods 【pod名称】 -n kube-wzw
#查看某个pod的详细信息kubectl delete deployment nginx -n kube-wzw
#删除pod控制器,(里面所有的pod都会被删除)kubectl delete pod nginx-wl2 -n kube-wzw
#删除自主式pod。kubectl delete pod 【pod名称】 -n 【命名空间】 --force --grace-period=0
#如pod无法删除,总是处于terminate状态,则要强行删除
//grace-period 表示过度存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止
4. 登录pod中的容器:
kubectl exec -it 【pod名称】 bash
#可以跨主机登录到指定的pod中的容器中,docker exec只能在容器所在主机上登录
5. 扩缩容pod控制器的pod:
kubectl scale deployment nginx --replicas=4 -n kube-wzw
#扩容kubectl scale deployment nginx --replicas=2 -n kube-wzw
#缩容
6.更改
三、创建项目实例:
项目的生命周期:创建-->发布-->更新-->回滚-->删除
1. 创建 :
kubectl create命令
- 创建并运行一个或多个容器镜像。
- 创建一个deployment 或job 来管理容器。
kubectl create deployment nginx --image=nginx --port=80 --replicas=3 -n wzwkubectl get pods ##查看创建的pods
kubectl get all #也可以直接发布
kubectl expose [-n <命名空间>] deployment <资源名称> --name <自定义svc资源名称> --type <svc资源类型> --port <clusterIP的端口> --targetPort <容器的端口>#或者先创建 ClusterIP|NodePort|LoadBalancer|ExternalName
kubectl create service <svc资源类型> <svc资源名称> --tcp=<clusterIP的端口:容器的端口>#更改容器使用的镜像
kubectl set image deployment <deployment资源名称> <容器名>=<镜像名>#更改创建的service标签
kubectl set selector service <svc资源名称> '标签key=value'
2. 发布:
kubectl expose命令
将资源暴露为新的 Service。
对于容器应用而言,Kubernetes 提供了基于 VIP(虚拟IP) 的网桥的方式访问 Service,再由 Service 重定向到相应的 Pod。
2.1 service 的 type 类型:
- ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)
- NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。 每个端口只能是一种服务,端口范围只能是 30000-32767。
- LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置Service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。 在service提交后,Kubernetes就会调用CloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的IP地址配置给负载均衡服务做后端。
- externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。
将资源暴露为新的 Service。
kubectl expose deployment nginx --target-port=80 --name=nginx-service --type=NodePort -n wzw//查看pod网络状态详细信息和 Service暴露的端口
kubectl get pods,svc -o wide//查看关联后端的节点
kubectl get endpoints//查看 service 的描述信息
kubectl describe svc nginx//在master01操作 查看访问日志
kubectl logs nginx-cdb6b5b95-fjm2x
3. 更新:
kubectl set 更改现有应用资源一些信息。
获取修改模板
kubectl set image --help
3.1 查看当前 nginx 的版本号:
curl -I 10.244.4.5
3.2 更新版本:
kubectl set image -n wzw deployment/nginx nginx=nginx:1.15//处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后依次类推
kubectl get pods -w
3.3 滚动更新详解:
kubectl get all
DESIRED:表示期望的状态是 10 个 READY 的副本
CURRENT:表示当前副本的总数: 即8 个日副本 + 5 个新副本
UP_TO-DATE:表示当前已经完成更新的副本数: 即 5个新副本
AVAILABLE:表示当前处于 READY 状态的副本数: 即8个日副本。
kubectl describe deployment/nginx
滚动更新通过参数 maxSurge 和 maxUnavailable 来控制副本替换的数量
maxSurge:此参数控制滚动更新过程中副本总数的超过 DESIRED 的上限。maxSurge 可以是具体的整数(比如 3),也可以是百分百,向上取整。maxSurge 默认值为 25%。
例如,DESIRED 为 10,那么副本总数的最大值为 10 + 10 * 25% = 13,即 CURRENT 为 13。
maxUnavailable:此参数控制滚动更新过程中,不可用的副本相占 DESIRED 的最大比例。maxUnavailable 可以是具体的整数(比如 3),也可以是百分百,向下取整。 maxUnavailable 默认值为 25%。
例如,DESIRED 为 10,那么可用的副本数至少要为 10 - 10 * 25% = 8,即 AVAILABLE 为 8。
因此 maxSurge 值越大,初始创建的新副本数量就越多;maxUnavailable 值越大,初始销毁的旧副本数量就越多。
理想情况下,DESIRED 为 10 的滚动更新的过程应该是这样的:
首先创建 3 个新副本使副本总数达到 13 个。
然后销毁 2 个旧副本使可用的副本数降到 8 个。
当这 2 个旧副本成功销毁后,可再创建 2 个新副本,使副本总数保持为 13 个。
当新副本通过 Readiness 探测后,会使可用副本数增加,超过 8。
进而可以继续销毁更多的旧副本,使可用副本数回到 8。
旧副本的销毁使副本总数低于 13,这样就允许创建更多的新副本。
这个过程会持续进行,最终所有的旧副本都会被新副本替换,滚动更新完成。
4. 回滚:
kubectl rollout 对资源进行回滚管理
kubectl rollout --help
//查看历史版本
kubectl rollout history deployment/nginx //执行回滚到上一个版本
kubectl rollout undo deployment/nginx//执行回滚到指定版本
kubectl rollout undo deployment/nginx --to-revision=1//检查回滚状态
kubectl rollout status deployment/nginx
5. 删除:
//删除副本控制器
kubectl delete deployment/nginx//删除service
kubectl delete svc/nginx-servicekubectl get all
四、应用发布:
1. 发布策略:
- 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚,优点用户无感知,缺点浪费资源成本高
- 滚动发布:按批次比例停止老版本实例,启动新版本实例
- 灰度发布/金丝雀发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本
2. 金丝雀发布:
Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
3. 发布示例:
3.1 更新deployment的版本,并配置暂停deployment:
kubectl set image deployment/myapp-ky31 nginx=nginx:1.15 && kubectl rollout pause deployment/myapp-ky31kubectl rollout status deployment/myapp-ky31#观察更新状态
3.2 监控更新的过程:
kubectl get pods -w
3.3 确保更新的pod没问题了,继续更新:
kubectl rollout resume deployment/myapp-ky31
3.4 查看最后的更新情况:
kubectl get pods -w curl [-I] 10.0.0.189
curl [-I] 192.168.80.11:44847
相关文章:

kubectl 资源管理命令-陈述式
目录 一、kubectl陈述式资源管理: 二、kubectl陈述式对象管理: 1.基础命令使用: 1.1 帮助手册: 1.2 查看版本信息: 编辑 1.3 查看资源对象简写: 1.4 查看集群信息: 1.5 配置kubectl自动补全: 1.6 node节点查看日志…...

【紫光同创国产FPGA教程】——【PGL22G第九章】HDMI环路实验例程
本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 适用于板卡型号: 紫光同创PGL22G开发平台(盘古22K) 一:盘古22K开发板(紫光同创PGL22G开…...

IDEA Plugin插件开发相关踩坑
1 前言 最近在研究IDEA插件开发,踩了不少坑,特意在这里记录一下…… 2 Java相关类找不到 照着网上一些资料,想要实现代码审计自动提示功能,需要继承AbstractBaseJavaLocalInspectionTool 结果import一片爆红,找不到相…...

汽车标定技术(八)--MPC57xx是如何支持标定的页切换
目录 1.页切换的概念 1.1 标定常量的理解 1.2 页切换 2.MPC57xx的Overlay模块 3.小结 1.页切换的概念 在汽车标定测量中,有一个概念我想很多人都听过,但是实际上在项目里没有用到过,那就是今天要讲的页切换概念。在讲页切换的时候&#…...

Ubuntu中增加交换内存
前言 在运行一些代码编译或者clang-format会占用大量的内存,此时可能会出现电脑卡死的情况,在ubuntu中可以通过增加交换内存来临时解决这个问题,相对于硬件改动成本更低,但是性能不如物理内存。 实践 查看当前的交换内存大小 …...

一文带您了解云渲染
很多刚刚接触云渲染的网友可能还不太了解云渲染,不知道云渲染是什么,不知道如何选择云渲染,不知道云渲染怎么收费,今天小编归纳总结了一些网友比较关心的问题,在本文中一一为大家解答。 云渲染是什么? 云…...

分享4个MSVCP100.dll丢失的解决方法
msvcp100.dll是一个重要的动态链接库文件,它是Microsoft Visual C 2010 Redistributable Package的一部分。这个文件的作用是提供在运行C程序时所需的函数和功能。如果计算机系统中msvcp100.dll丢失或者损坏,就会导致软件程序无法启动运行,会…...
国际腾讯云服务器流量收费准分析!!
腾讯云是腾讯公司供应的云核算服务,包含云服务器、云存储、数据库、CDN、安全等服务。本文将对腾讯云服务器流量收费标准进行具体的分析,协助用户了解腾讯云服务器的运用本钱。 腾讯云服务器流量收费标准首要分为包年包月、按需付费和按流量付费三种办法…...

Redis系列-四种部署方式-单机部署+主从模式+哨兵模式【7】
目录 Redis系列-四种部署方式-单机部署主从模式【7】redis-四种部署模式单机模式主从模式数据同步的方式全量数据同步增量数据同步 Redis哨兵模式总结缺点:哨兵模式应用sentinel.conf配置项 REF 个人主页: 【⭐️个人主页】 需要您的【💖 点赞关注】支持…...
Webpack 的作用和工作原理是什么?
Webpack 是一个现代的静态模块打包工具,它的作用是将前端应用程序的各种资源(如 JavaScript、CSS、图片等)视为模块,并将它们打包成可以在浏览器中运行的静态文件。它的主要功能包括模块打包、资源优化、代码分割、加载器转换等。…...

ros1 实现Server端自定义四 Topic模式控制海龟运动
一、服务模型 Server端本身是进行模拟海龟运动的命令端,它的实现是通过给海龟发送速度(Twist)的指令,来控制海龟运动(本身通过Topic实现)。 Client端相当于海龟运动的开关,其发布Request来控制…...
IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何找回被 Drop Commit 的提交记录
本心、输入输出、结果 文章目录 IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何找回被 Drop Commit 的提交记录前言查询 reflog 日志通过 Git Reset HEAD (hard) 找回已经 Drop Commit 的提交记录Git Reset HEAD (hard) 模式和 mixed 模式有啥区别git reset --h…...

C# 压缩PDF文件
PDF 文件可以包含文本、图片及各种媒体元素,但如果文件太大则会影响传输效果同时也会占用过多磁盘空间。通过压缩PDF文件,能够有效减小文件大小,从而提高传输效率并节省存储空间。想要通过C#代码快速有效地压缩 PDF 文件,下面是实…...

JS点击图片指定对象变色两种方法
要求:点击上面的颜色实现下面的图像变成相同的颜色 难点:对于js函数的this对象不太清楚如何传递 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>changeColor</title>&l…...

什么是浏览器指纹?指纹浏览器如何避免浏览器指纹的追踪识别?
在做独立站跨境电商的过程中,海外社交媒体平台已成为我们必不可少的交易渠道。但是,由于各大平台对账号管理极其严格,对账户进行严密监控也成为了常态。这当然与浏览器指纹识别有关,今天龙哥就给大家科普一下什么是浏览器指纹&…...

uni-app 、Spring Boot 、ant Design 打造的一款跨平台包含小说(仿真翻页、段落听书)、短视频、壁纸等功能含完备后台管理的移动应用
简介 咪哩快看,为用户提供优质阅读,短视频,共同记录美好生活的移动应用,并含有一套完备的后台管理体系,助力开发者快速数字化,开启你的财富之门! 官网: https://miliqkdoc.motopa.…...

STM32-EXTI中断
EXTI简介 EXTI(Extern Interrupt)外部中断 EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程…...

2023云栖大会,Salesforce终敲开中国CRM市场
2015年被视为中国CRM SaaS元年,众多CRM SaaS创业公司和厂商在Salesforce的榜样作用下涌入了CRM SaaS赛道。在全球市场,Salesforce是CRM SaaS领域的领导厂商,连续多年占据了全球CRM SaaS第一大厂商地位。然而,Salesforce作为业务类…...

工业镜头接口类型
现有产品主要有以下接口 1、C:最常见的工业相机接口,受限于接口物理尺寸大小,最大靶面目前是4/3” 2、M42:M421.0,2k和4k线阵相机使用 3、M58S:M580.75,大靶面相机使用,可以转C(限于CH080相机,靶面4/3”),可以转F,可以…...
生产环境中oracle dba权限检查和回收相关命令汇总
一、oracle dba权限检查和回收的作用和意义 在Oracle数据库生产环境中,回收oracle dba权限的作用和意义重大,具体表现在以下三方面: 安全性:回收赋权检查和回收可以确保数据库中的权限控制得到有效管理。通过检查和回收权限&…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
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…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...