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

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。servicetype 类型:
●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实例高性价比&#xff0c;CPU采用Intel(R) Xeon(R) Platinum&#xff0c;主频是2.5 GHz&#xff0c;云服务器U1实例的基准vCPU算力与5代企业级实例持平&#xff0c;最高vCPU算力与6代企业级实例持平&#xff0c;提供2c-32c规格和1:1/2/4/8丰富…...

hive的详细使用文档和使用案例

目录 Hive 简介安装连接到Hive创建数据库创建表加载数据查询数据修改表删除表 使用案例结论 Hive 简介 Hive是一个基于Hadoop的数据仓库工具&#xff0c;可以将结构化数据映射到Hadoop HDFS上&#xff0c;并提供SQL查询功能。Hive的设计目标是让那些熟悉SQL语言的用户能够在Ha…...

KL散度

KL散度&#xff08;Kullback-Leibler divergence&#xff09;&#xff0c;也称为相对熵&#xff08;relative entropy&#xff09;&#xff0c;是用来衡量两个概率分布之间差异的一种指标。在机器学习中&#xff0c;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 等待唤醒机制(阻塞队列方式实现&#xff09;1…...

【一起啃书】《机器学习》第五章 神经网络

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

matlab实验二可视化

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

(数据结构)栈的实现——再一次保姆级教学

目录 1. 栈 ​编辑 1.2 栈的实现 2. 代码的实现 2.1 初始化栈和销毁栈 2.2栈顶元素的插入 2.3栈顶元素的删除 栈元素删除 2.4栈顶元素的获取和栈元素的个数 1. 栈 1.1 栈的概念和结构 栈(Stack)是一种线性存储结构&#xff0c;它具有如下特点&#xff1a; &#xff0…...

【5G RRC】RSRP、RSRQ以及SINR含义、计算过程详细介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

K8s(Kubernetes)学习(一):k8s概念及组件

Kubernetes中文文档&#xff1a;https://kubernetes.io/zh-cn/docs/home/ Kubernetes源码地址&#xff1a;https://github.com/kubernetes/kubernetes 一:Kubernetes是什么 首先要了解应用程序部署经历了以下几个时代&#xff1a; 传统部署时代&#xff1a;在物理服务器上运…...

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 …...

物联网和边缘计算:如何将数据处理和决策推向设备边缘

第一章&#xff1a;引言 当我们谈论物联网&#xff08;IoT&#xff09;时&#xff0c;我们通常指的是将各种设备连接到互联网&#xff0c;并通过数据交换来实现智能化的网络。然而&#xff0c;传统的物联网模型通常涉及将数据发送到云端进行处理和分析。然而&#xff0c;随着技…...

【Android学习专题】java基本语法和概念(学习记录)

学习记录来自菜鸟教程 Java 变量 Java 中主要有如下几种类型的变量 局部变量 在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中&#xff0c;方法结束后&#xff0c;变量就会自动销毁类变量&#xff08;静态变量&#xff09; 类变量也声…...

Android系统启动全流程分析

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

RabbitMQ --- 惰性队列、MQ集群

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

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入门 引入相关的依赖&#xff0c;SpringBoot的版本…...

DHCP+链路聚合+NAT+ACL小型实验

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

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...