当前位置: 首页 > 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&#…...

别再只盯着线宽了!PCB设计新手必懂的差分布线与等长布线实战避坑指南

高速PCB设计进阶&#xff1a;差分布线与等长布线的工程化实践 第一次在Altium Designer里看到DRC报出密密麻麻的差分对长度误差警告时&#xff0c;我盯着屏幕上那些红色波浪线足足愣了三分钟——明明按照教科书上的理论设置了90Ω阻抗&#xff0c;为什么实际布线后信号眼图还是…...

Android studio会自动下载高版本的tools

AGP Android Gradle PluginAGP 版本 最低要求的 Build-Tools 是固定死的&#xff0c;你改不了&#xff1a;AGP 8.1.0 → 最低 Build-Tools 33AGP 8.2.0 → 最低 Build-Tools 34AGP 8.3 → 最低 Build-Tools 34AGP 8.7 → 最低 Build-Tools 36当gradle/libs.versions.toml中的A…...

跨平台 Conda 环境迁移:从 Linux 到 Windows 的完整指南

1. 为什么需要跨平台迁移 Conda 环境&#xff1f; 作为一个常年混迹在 Linux 和 Windows 双系统的开发者&#xff0c;我深刻理解环境迁移的痛苦。你可能遇到过这种情况&#xff1a;在 Linux 服务器上训练好的机器学习模型&#xff0c;想在 Windows 本地机器上部署测试&#xff…...

雀魂Mod Plus终极指南:如何免费解锁全角色皮肤和装扮

雀魂Mod Plus终极指南&#xff1a;如何免费解锁全角色皮肤和装扮 【免费下载链接】majsoul_mod_plus 雀魂解锁全角色、皮肤、装扮等&#xff0c;支持全部服务器。 项目地址: https://gitcode.com/gh_mirrors/ma/majsoul_mod_plus 还在为雀魂游戏中无法获得心仪角色和皮肤…...

MogFace镜像安全合规实践:纯本地运行杜绝隐私泄露,满足GDPR/等保2.0要求

MogFace镜像安全合规实践&#xff1a;纯本地运行杜绝隐私泄露&#xff0c;满足GDPR/等保2.0要求 在数据隐私和安全法规日益严格的今天&#xff0c;处理包含人脸等敏感信息的图像数据&#xff0c;正面临前所未有的合规挑战。无论是欧盟的《通用数据保护条例》&#xff08;GDPR&…...

Mermaid Live Editor终极指南:实时图表编辑与可视化工具深度解析

Mermaid Live Editor终极指南&#xff1a;实时图表编辑与可视化工具深度解析 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-l…...

直流电流采样四大方案:从原理到选型实战指南

1. 直流电流采样技术概述 测量直流电流就像给电路做"体检"&#xff0c;不同的采样方案就是不同的"体检设备"。作为嵌入式工程师&#xff0c;我在设计户外储能电源时发现&#xff0c;选错采样方案轻则导致数据不准&#xff0c;重则引发系统故障。直流电流采…...

从Material Design 3实战出发:用Dynamic Color和Material You主题系统重构你的Android暗黑模式

Material Design 3实战&#xff1a;用Dynamic Color重构Android暗黑模式体验 深夜刷手机时&#xff0c;你是否曾被刺眼的亮色界面晃得睁不开眼&#xff1f;随着Android 12引入Material You设计语言&#xff0c;暗黑模式已从简单的颜色反转进化为与系统深度联动的个性化体验。本…...

Stable Yogi Leather-Dress-Collection 多模型对比评测:与同类开源模型的优势分析

Stable Yogi Leather-Dress-Collection 多模型对比评测&#xff1a;与同类开源模型的优势分析 最近在尝试用AI做皮革服饰设计&#xff0c;发现了一个挺有意思的模型——Stable Yogi Leather-Dress-Collection。听名字就知道&#xff0c;它是专门针对皮革服装设计这个细分领域的…...

从“普惠”到“全能”:全志T153工业芯如何以HZ-T153_MiniEVM重塑工控开发体验

1. 为什么工业控制需要"普惠型"芯片&#xff1f; 在工业自动化领域&#xff0c;设备制造商常常面临一个两难选择&#xff1a;要么采用性能强大但价格昂贵的外国芯片方案&#xff0c;要么选择价格低廉但功能受限的入门级控制器。全志T153的出现打破了这种局面&#xf…...