kubectl常用命令|pod生命周期|金丝雀发布|超详细
kubectl常用命令|pod生命周期|金丝雀发布|超详细
- 一 kubectl常用命令
- 1.1 查看版本信息
- 1.2查看资源对象简写
- 1.3查看集群信息
- 1.4 配置kubectl自动补全
- 1.5node节点查看日志
- 二 k8s基本信息查看
- 2.1 查看 master 节点状态
- 2.2 查看命令空间
- 2.3 创建和删除命名空间
- 2.4 在命名空间kube-public创建副本控制器(deployment) 来启动Pod (nginx-test)
- 2.5 查看命名空间kube-public 中的pod 信息
- 2.6 描述某个资源的详细信息
- 2.7 查看default命名空间的所有资源
- 2.8 kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录
- 2.9 删除资源和永久删除资源
- 2.10 扩容,缩容
- 三 项目的生命周期
- 3.1 创建 kubectl create
- 3.2 发布 kubectl expose
- **service介绍
- 3.21 查看pod网络状态详细信息和 Service暴露的端口
- 3.22 查看关联后端的节点
- 3.23 查看 service 的描述信息
- 3.24 实现负载均衡
- 3.25 查看访问日志
- 3.3 更新 kubectl set
- 3.31查看当前nginx版本号
- 3.32 将nginx 版本更新为 1.15 版本
- 3.4 回滚 kubectl rollout
- 3.41对资源进行回滚管理
- 3.42 查看历史版本
- 3.43 执行回滚到上一个版本
- 3.44 执行回滚到指定版本
- 3.45 检查回滚状态
- 3.5 删除 kubectl delete
- 四 金丝雀发布(Canary Release)
- 4.1 更新deployment的版本,并配置暂停deployment
- 4.2 查看更新状态
- 4.3 继续更新其余pod,查看结果
一 kubectl常用命令
1.1 查看版本信息
kubectl version
1.2查看资源对象简写
kubectl api-resources
1.3查看集群信息
kubectl cluster-info
1.4 配置kubectl自动补全
source <(kubectl completion bash) 可以补全一些长的命令
1.5node节点查看日志
journalctl -u kubelet -f
二 k8s基本信息查看
kubectl get <resource> [-o wide | json | yaml] [-n namespace]
获取资源的相关信息,-n指定命令空间,-o指定输出格式
resource可以是具体资源名称,如pod nginx -xxx;也可以是资源类型,如pod; 或者all (仅展示几种核心资源,并不完整)
--all-namespaces 或-A :表示显示所有命令空间,
--show-labels :显示所有标签
-l app:仅显示标签为app的资源
-l app=nginx :仅显示包含app标签, 且值为nginx的资源kubectl get pod -o wide
2.1 查看 master 节点状态
kubectl get componentstatuses
kubectl get cs
2.2 查看命令空间
kubectl get namespace
kubectl get ns
2.3 创建和删除命名空间
kubectl create ns boa
kubectl get ns
kubectl delete ns boa
kubectl get ns
2.4 在命名空间kube-public创建副本控制器(deployment) 来启动Pod (nginx-test)
kubectl create deployment nginx-test --image=nginx -n kube-public
2.5 查看命名空间kube-public 中的pod 信息
kubectl get pods -n kube-public
2.6 描述某个资源的详细信息
1 查看资源详细信息
kubectl describe deployment nginx-test -n kube-public
2 查看pod详细信息
kubectl describe pod nginx -n kube-public
2.7 查看default命名空间的所有资源
kubectl get all [-n default]
2.8 kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录
kubectl exec -it nginx-test-795d659f45-jdlkv bash -n kube-public
2.9 删除资源和永久删除资源
1 若pod无法删除,总是处于terminate状态,则要强行删除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod2 删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来
kubectl delete pod nginx-test-795d659f45-jdlkv -n kube-public 3 删除副本控制器
kubectl delete deployment nginx-test -n kube-public
2.10 扩容,缩容
扩容
kubectl scale deployment nginx-test --replicas=3 -n kube-public
s缩容
kubectl scale deployment nginx-test --replicas=1 -n kube-public
三 项目的生命周期
创建-->发布-->更新-->回滚-->删除
3.1 创建 kubectl create
创建并运行一个或多个容器镜像。
创建一个deployment 或job 来管理容器。
kubectl create --help启动 nginx 实例,暴露容器端口 80,设置副本数 3
1 kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3
2 kubectl get pods
3 kubectl get all
3.2 发布 kubectl expose
发布 kubectl expose命令
将资源暴露为新的 Service。
kubectl expose --help为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
**service介绍
Kubernetes 之所以需要 Service,一方面是因为 Pod 的 IP 不是固定的(Pod可能会重建),另一方面则是因为一组 Pod 实例之间总会有负载均衡的需求。
Service 通过 Label Selector 实现的对一组的 Pod 的访问。
对于容器应用而言,Kubernetes 提供了基于 VIP(虚拟IP) 的网桥的方式访问 Service,再由 Service 重定向到相应的 Pod。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去访问集群外部的资源,它本身没有绑定任何的资源。headless clusterIP 无头模式
3.21 查看pod网络状态详细信息和 Service暴露的端口
kubectl get pods,svc -o wide
3.22 查看关联后端的节点
kubectl get endpoints
3.23 查看 service 的描述信息
kubectl describe svc nginx
3.24 实现负载均衡
1 在node01和node02节点上操作,查看负载均衡端口
yum install ipvsadm -y
ipvsadm -Ln
2 在master01主节点分别在3个pod内写入网页文件
kubectl exec -it nginx-d9d8cf5c7-g7w7k bash
echo this is web1> /usr/share/nginx/html/index.html
kubectl exec -it nginx-d9d8cf5c7-llnpw bash
echo this is web2> /usr/share/nginx/html/index.html
kubectl exec -it nginx-d9d8cf5c7-vvrpd bash
echo this is web3> /usr/share/nginx/html/index.html3 在master访问clusterip和nodeport
curl 192.168.10.10:30928
3.25 查看访问日志
在master01操作 查看访问日志
kubectl logs nginx-d9d8cf5c7-...
3.3 更新 kubectl set
1 更改现有应用资源一些信息。
kubectl set --help2 获取修改模板
kubectl set image --help
3.31查看当前nginx版本号
curl -I 192.168.10.10:30928
3.32 将nginx 版本更新为 1.15 版本
1 kubectl set image deployment/nginx nginx=nginx:1.152 处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后依次类推
kubectl get pods -w
3 再看更新好后的Pod的ip会改变
kubectl get pods -o wide4 再看 nginx 的版本号
curl -I 192.168.10.10:30928
3.4 回滚 kubectl rollout
3.41对资源进行回滚管理
kubectl rollout --help
3.42 查看历史版本
kubectl rollout history deployment/nginx
3.43 执行回滚到上一个版本
kubectl rollout undo deployment/nginx
3.44 执行回滚到指定版本
kubectl rollout undo deployment/nginx --to-revision=6
3.45 检查回滚状态
kubectl rollout status deployment/nginx
3.5 删除 kubectl delete
1删除副本控制器
kubectl delete deployment/nginx2 删除service
kubectl delete svc/nginx-service3 kubectl get all
四 金丝雀发布(Canary Release)
Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
4.1 更新deployment的版本,并配置暂停deployment
1 kubectl set image deployment/nginx nginx=nginx:1.16 && kubectl rollout pause deployment/nginx
2 kubectl rollout status deployment nginx
4.2 查看更新状态
kubectl get pods -o wide
curl -I 10.244.1.21
curl -I 10.244.2.21
4.3 继续更新其余pod,查看结果
1 确保更新的pod没问题了,继续更新
kubectl rollout resume deployment/nginx
kubectl get pods -o wide2 查看更新后的版本
curl -I 10.244.2.22
3 查看状态
kubectl rollout status deployment nginx
相关文章:

kubectl常用命令|pod生命周期|金丝雀发布|超详细
kubectl常用命令|pod生命周期|金丝雀发布|超详细 一 kubectl常用命令1.1 查看版本信息1.2查看资源对象简写1.3查看集群信息1.4 配置kubectl自动补全1.5node节点查看日志 二 k8s基本信息查看2.1 查看 master 节点状态2.2 查看命令空间2.3 创建和删除命名空间2.4 在命名空间kube-…...

【Linux系统】Linux进程信号详解
Linux进程信号 0 引言1 认识信号1.1 什么是信号1.2 发送信号的本质1.3 信号的处理 2 信号的产生2.1 键盘产生2.2 调用系统函数向进程发送信号2.3 由软件条件产生信号2.4 硬件异常产生信号 3 信号的保存4 信号的处理5 总结 0 引言 本篇文章会从Linux信号的产生到信号的保存&…...

阿里云u1服务器通用算力型CPU处理器性能测评
阿里云服务器u1通用算力型Universal实例高性价比,CPU采用Intel(R) Xeon(R) Platinum,主频是2.5 GHz,云服务器U1实例的基准vCPU算力与5代企业级实例持平,最高vCPU算力与6代企业级实例持平,提供2c-32c规格和1:1/2/4/8丰富…...
hive的详细使用文档和使用案例
目录 Hive 简介安装连接到Hive创建数据库创建表加载数据查询数据修改表删除表 使用案例结论 Hive 简介 Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到Hadoop HDFS上,并提供SQL查询功能。Hive的设计目标是让那些熟悉SQL语言的用户能够在Ha…...
KL散度
KL散度(Kullback-Leibler divergence),也称为相对熵(relative entropy),是用来衡量两个概率分布之间差异的一种指标。在机器学习中,KL散度常常用于度量两个概率分布之间的相似度或差异性。 具体…...

Java基础学习(16)多线程
Java基础学习多线程 一、多线程1.1 什么是多线程1.2 多线程的两个概念1.2.1 并发 1.3 多线程的实现方式1.4 多线程的成员方法1.5 线程的生命周期 二、线程安全1.6 同步方法1.7 锁lock1.8 死锁1.8 生产者和消费者 (等待唤醒机制)1.9 等待唤醒机制(阻塞队列方式实现)1…...

【一起啃书】《机器学习》第五章 神经网络
文章目录 第五章 神经网络5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 全局最小与局部极小5.5 其他常见神经网络5.6 深度学习 第五章 神经网络 5.1 神经元模型 神经网络是由具有适应性简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统…...

matlab实验二可视化
学聪明点,自己改,别把我卖了 一、实验目的及要求 要求 1、掌握 MATLAB常用的二维和三维绘图函数 2、掌握MATLAB的图形注释 3、熟悉MATLAB常用的图形修饰 4、熟悉MATLAB的图形动画 实验原理 1、MATLAB二维绘图:plot,fplot,fimplicit…...

(数据结构)栈的实现——再一次保姆级教学
目录 1. 栈 编辑 1.2 栈的实现 2. 代码的实现 2.1 初始化栈和销毁栈 2.2栈顶元素的插入 2.3栈顶元素的删除 栈元素删除 2.4栈顶元素的获取和栈元素的个数 1. 栈 1.1 栈的概念和结构 栈(Stack)是一种线性存储结构,它具有如下特点: ࿰…...

【5G RRC】RSRP、RSRQ以及SINR含义、计算过程详细介绍
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...

K8s(Kubernetes)学习(一):k8s概念及组件
Kubernetes中文文档:https://kubernetes.io/zh-cn/docs/home/ Kubernetes源码地址:https://github.com/kubernetes/kubernetes 一:Kubernetes是什么 首先要了解应用程序部署经历了以下几个时代: 传统部署时代:在物理服务器上运…...
Web3 常用语和黑话你知道吗?
My friend Dave used to be a bagholder, but he FOMO’d and bought even more BTC. Now, he’s a big whale HODLing for that moon. …that’s a lot to take in for just two sentences. If you’re new to Bitcoin and the world of cryptocurrencies, we understand if …...

物联网和边缘计算:如何将数据处理和决策推向设备边缘
第一章:引言 当我们谈论物联网(IoT)时,我们通常指的是将各种设备连接到互联网,并通过数据交换来实现智能化的网络。然而,传统的物联网模型通常涉及将数据发送到云端进行处理和分析。然而,随着技…...

【Android学习专题】java基本语法和概念(学习记录)
学习记录来自菜鸟教程 Java 变量 Java 中主要有如下几种类型的变量 局部变量 在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁类变量(静态变量) 类变量也声…...

Android系统启动全流程分析
当我们买了一个手机或者平板,按下电源键的那一刻,到进入Launcher,选择我们想要使用的某个App进入,这个过程中,系统到底在做了什么事,伙伴们有仔细的研究过吗?可能对于Framework这块晦涩难懂的专…...

RabbitMQ --- 惰性队列、MQ集群
一、惰性队列 1.1、消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。 解决消息堆积有三种…...

1.Buffer_Overflow-1.Basic_Jump
github上面的练习题 git clone https://github.com/Adamkadaban/LearnPwn 然后开始做 先进行 readelf 然后进行执行看看 是怎么回事 ./buf1发现就是一个输入和输出 我们checksec看看 发现stack 保护关闭 开启了NX保护 我们进入ida64看看反汇编 我习惯先看看字符串 SHITF…...
MySQL入门语法第三课:表结构的创建
数据表结构 定点数类型decimal(m,d) m表示数字总位数 d表示小数位数 ★创建数据表先要选择数据库 1 . CREATE TABLE 表名称 创建数据表 (字段名1 数据类型1 [,字段名2 数据名2] [, .....] ); 一个字段写一行 修改表名 alter table 旧表名 rename 新表名…...

SpringSecurity框架学习与使用
SpringSecurity框架学习与使用 SpringSecurity学习SpringSecurity入门SpringSecurity深入认证授权自定义授权失败页面权限注解SecuredPreAuthorizePostAuthorizePostFilterPreFilter 参考 SpringSecurity学习 SpringSecurity入门 引入相关的依赖,SpringBoot的版本…...

DHCP+链路聚合+NAT+ACL小型实验
实验要求: 1.按照拓扑图上标识规划网络。 2.使用0SPF协议进程100实现ISP互通。 3.私网内PC属于VLAN1O, FTP Server属于VLAN2O,网关分 别为所连接的接入交换机,其中PC要求通过DHCP动态获取 4:私网内部所有交换机都为三层交换机,请合理规划VLAN&#…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...