Kubectl 使用详解——k8s陈述式资源管理

news2024/11/19 23:41:07

目录

一、kubectl 简介 

二、kubectl 的使用

1.基础用法

(1)配置kubectl自动补全

(2)查看版本信息

(3)查看资源对象信息 

(4)查看集群信息

(5)查看日志

2.查看k8s集群信息

(1) 查看master节点状态

(2)查看命名空间

(3)创建和删除命名空间

3.创建和删除pod

(1)指定pod控制器和容器镜像创建pod

(2)删除pod

4.查看资源详细信息

5.登入容器

6.扩缩容

三、项目的生命周期

1.创建

2.发布

3.更新

4.回滚

5.删除

四、金丝雀发布

1.创建deployment

2.暴露服务 

3.更新并在第一轮完成后暂停

4.测试无误后继续更新 


一、kubectl 简介 

        kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径。

        对资源的增、删、查操作比较方便,但对改的操作就不容易了。

kubectl的命令大全:kubectl --help
k8s中文文档: http://docs.kubernetes.org.cn/683.html

二、kubectl 的使用

1.基础用法

(1)配置kubectl自动补全

source <(kubectl completion bash)        #在当前shell环境中配置kubectl自动补全

                                                               (可以在 /etc/bashrc 中添加此命令实现全局添加)

(2)查看版本信息

kubectl version        #查看版本信息(建议与当前k8s版本一致)

(3)查看资源对象信息 

kubectl api-resources

(4)查看集群信息

kubectl cluster-info

kubectl cluster-info dump        #显示详细信息

(5)查看日志

kubectl logs 资源名称 [-c 容器名] [-f]        #查看容器日志 [ 指定pod中的容器 ]  [ 跟踪显示 ]

journalctl -u kubelet           #查看节点日志

journalctl -u kubelet -f        #跟踪显示

2.查看k8s集群信息

kubectl get <resource> [选项]                    #查看指定资源的信息

                                  -n 命名空间                #指定命名空间(不加默认是defaults资源)

                                  -o wide | json | yaml   #指定输出格式

resource可以是具体资源名称,如nginx;也可以是资源类型,如pods;或者all(仅展示几种核心资源,并不完整)
--all-namespaces 或-A :表示显示所有命令空间
--show-labels:显示所有标签
-l 标签:仅显示指定标签的资源
-l 标签=值:仅显示包含指定标签, 且值为指定值的资源

-w:持续跟踪输出

(1) 查看master节点状态

kubectl get cs

kubectl get componentstatuses

(2)查看命名空间

命名空间的作用:用于允许不同命名空间的相同类型的资源重名

kubectl get ns        #从此条命令获取到的命名空间名,即可用于get 的 -n 选项
kubectl get namespaces

(3)创建和删除命名空间

kubectl create/delete namespace 命名空间名

kubectl create/delete ns 命名空间名

注:删除命名空间会将其下的资源全部删除,所以慎用 

3.创建和删除pod

(1)指定pod控制器和容器镜像创建pod

kubectl create <pod控制器名> <pod名称> --image=镜像名

                          Deployment:无状态应用部署

                          Statefulset:有状态应用部署

                          Replicaset:副本数量控制器

                          Daemonset:确保所有节点运行同一类 Pod

                          Cronjob:计划性任务

                          ...

(2)删除pod

但由于存在deployment/rc之类的副本控制器期望副本数量,删除pod也会重新拉起来。真正需要删除,需要删除其控制器。

kubectl delete pods <pod名>

                                               --force --grace-period=0         #添加该选项强制删除(无需等待)

4.查看资源详细信息

kubectl describe 资源类型

kubectl describe 资源类型/pod名

5.登入容器

kubectl exec -it pod名 -c 容器名 bash/sh        #区别于docker exec只能登入本机的docker

                                    #如果pod中只有一个容器,则无需-c指定

kubectl exec -it pod名 -c 容器名 -- 命令        #可以实现不进入容器执行 -- 后的命令

6.扩缩容

kubectl scale 资源名 --replicas=n        #n为数字,大于当前副本数则是扩容,小于则是缩容

三、项目的生命周期

创建 --> 发布 --> 更新 --> 回滚 --> 删除

1.创建

创建并运行一个或多个容器镜像;创建一个deploy或 job管理容器。

kubectl create deployment 控制器名 --image=镜像名 --port=pod端口 --replicas=n

2.发布

将资源暴露为新的service

        Kubernetes 之所以需要service,一方面是因为Pod 的IP 不是固定的(Pod可能会重建),另一方面则是因为一组Pod 实例之间总会有负载均衡的需求。

        Service 通过Label Selector 实现的对一组的 Pod的访问。        

        对于容器应用而言,Kubernetes 提供了基于VIP(虚拟)网桥的方式访问Service,再由 service重定向到相应的 Pod。

service 的 type 类型:
●ClusterIP:提供一个集群内部的虚拟IP以供k8s集群内部访问(service默认类型)
●NodePort:在每个Node节点上开启一个端口,K8S集群内外的用户都可以通过 Node Ip:NodePort 的方式使Kubernetes集群外部的程序可以访问service。
●LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云很务提供商的云平台上没置service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
        在service提交后,Kubernetes就会调用cloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的地址配置给负载均衡服务做后端。
●ExternalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让pod去访问集群外部的资源,它本身没有绑定任何的资源。

serivce 和 pod 的端口:
●port:serivce 的 ClusterIP 所使用的端口
●nodePort:NodePort类型的service所定义的 在每个Node节点上开启的端口(默认端口范围30000~32767)
●targetPort:以上port或nodePort 所要转发到的后端 Pod 的端口

●containerPort:后端 Pod 的容器 所使用的端口

暴露默认的 ClusterIP 类型服务

kubectl expose deployment 控制器名称 --name=服务名称 --port=服务端口 --target-port=pod端口

暴露 NodePort 类型服务 

kubectl expose deployment 控制器名称 --name=服务名称 --port=服务端口 --target-port=pod端口 --type=NodePort

以上转发可以在ipvsadm中查看到(我们配置使用的是ipvs转发,性能最好)

3.更新

可以对以下资源进行更新

#示例:对指定pod控制器的镜像版本镜像更新

kubectl set image deployment nginx-test nginx=nginx:1.18      

4.回滚

回滚操作的使用方式

kubectl rollout history pod控制器 控制器名        #查看该资源的更新历史

kubectl rollout undo pod控制器 控制器名 [--to-revision=n]      #回滚资源上一个[ 指定的 ]记录

kubectl rollout status pod控制器 控制器名          #查看回滚事务状态

5.删除

删除所有资源代表一个项目的结束

kubectl delete pod控制器 控制器名称        #删除pod控制器

kubectl delete 服务 服务名称                     #删除服务

四、金丝雀发布

        Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,
仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。

1.创建deployment

2.暴露服务 

3.更新并在第一轮完成后暂停

4.测试无误后继续更新 

至此就完成了金丝雀发布过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刷爆力扣之 Z 字形变换

刷爆力扣之 Z 字形变换 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&#xff0c…

为什么我建议线上高并发量的代码,一定要注意数据可能会不一致?

V-xin&#xff1a;ruyuan0330 获得600页原创精品文章汇总PDF 目录 前情提示什么是数据一致性&#xff1f;一个数据计算链路的梳理数据计算链路的bug电商库存数据的不一致问题大型系统的数据不一致排查有多困难 一、前情提示 这篇文章&#xff0c;咱们继续来聊聊之前的亿级流…

06-Redis缓存设计与性能优化

多级缓存架构 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询&#xff0c; 失…

基于多级适应方法的无人机(UAV)在发动机输出情况下的导航和路径规划(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【SwinTransformer】GitHub源码,main.py,swin_transformer.py...

声明:仅学习使用~ “我们抬头便看到星光,星星却穿越了万年”。 Contents 数据与环境配置解读main.pyswin_transformer.py数据与环境配置解读 来看 SwinTransformer 的github官网。已经开源了。(想不到在家里居然可以直接上GItHub,真好啊!) 进去后可以看到如下界面: I…

Windows tensorflow、keras虚拟环境搭建记录(使用conda和mamba)

Windows tensorflow、keras虚拟环境搭建记录 过程记录 首先创建虚拟环境 注意如果之前把conda镜像源配置到了国内&#xff0c;那这一步就不要挂梯子&#xff0c;否则会报出这种错误 conda create --name TF python3.5.2TF那里是给虚拟环境取个名字python后面指定版本号&#x…

103.(leaflet之家)leaflet态势标绘-聚集地绘制

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html>…

一文带你看透空气质量

空气质量的好坏反映了空气污染程度&#xff0c;它是依据空气中污染物浓度的高低来判断的。空气污染是一个复杂的现象&#xff0c;在特定时间和地点空气污染物浓度受到许多因素影响。来自固定和流动污染源的人为污染物排放大小是影响空气质量的最主要因素之一&#xff0c;其中包…

【MySQL入门实战3】-存储引擎

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

【K8S系列】第十三讲:Ingress详解

目录 序言 1.Ingress基本介绍 1.1 暴露服务问题 1.2 什么是Ingress 1.2 Ingress的核心组件 1.2.1 ingress 1.2.2 ingress-controller 1.2.3 反向代理负载均衡器 2.安装 2.1 下载/修改配置文件 2.2 安装资源 2.3 结果 2.4 项目示例 2.4.1 创建service及deploymen…

博德宝闪耀回归,九牧国际化提速

文|螳螂观察 作者|陈小江 怎样让厨房变得更好&#xff1f; 这是德国百年奢华橱柜品牌博德宝1892年创立之初&#xff0c;就在思考的问题&#xff0c;也是其品牌主张。 130年来&#xff0c;关于该问题的答案&#xff0c;随着博德宝不断创新在时刻刷新&#xff0c;并在全球引领…

Sentinel

Sentinel—高可用流量管理框架/服务容错组件 一.为什么要用Sentinel? 1.微服务架构中当某服务挂掉的时候常见的原因有哪些&#xff1f; 1.异常没处理 比如DB连接失败&#xff0c;文件读取失败等 2.突然的流量激增 比如&#xff1a;用户经常会在京东、淘宝、天猫、拼多多…

java 三级缓存

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;java 三级缓存 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: 林在闪闪发光…

五问补盲(四)| 好用的补盲激光雷达,得满足哪些条件?

作者 | 爱LiDAR的小飞哥 编辑 | 王博上一期&#xff0c;我们聊了补盲激光雷达上车的重要前提——安全。本期我们来聊聊&#xff0c;满足功能安全、网络安全等领域的关键设计要求之后&#xff0c;补盲激光雷达怎么做到好用&#xff0c;更贴近工程化的表述是「易用」。在之前的文…

利器 | 接口自动化测试框架 RESTAssured 实践(三):对 Response 结果导出

上一篇文章中介绍了rest-assured对返回结果的断言&#xff0c;最后说明了对于Response结果导出的需求。可查看往期文章进行查看。 HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Mon, 13 Jan 2020 02:15:11 GMT Content-Type: application/json;charsetUTF-8 Transfer-Encoding…

产险精算GLM案例

这是对北美产险精算学会CAS北美产险精算师考试教材《广义线性模型实践者指南》的第一章中的实例的结果验证&#xff0c;教材中使用的是纯数学理论推导&#xff0c;这里使用python进行结果验证。 原始数据是一个简单的分组数据&#xff1a; 这个原始数据表需要进行结构化后&…

前端基础(十七)_HTML5新特性

HTML5新特性 1、在网页上绘制图形的canvas元素 原生JavaScriptcanvas实现五子棋游戏_值得一看 鼠标移动淡入淡出Canvas小球效果_TS版本 JS配合canvas实现贪吃蛇小游戏 canvas基础及太极图案例 2、多媒体相关video和audio元素 html5 video 音频标签: audio 标签 在IE8及更早版本…

LVGL学习笔记1 - 准备

目录 1. 下载LVGL源代码 2. 平台 3. 导入到工程 3.1 配置头文件 3.2 src文件夹 4. 移植 4.1 显示接口部分 4.1.1 disp_init 4.1.2 lv_port_disp_init 4.1.3 disp_flush 4.2 IPA部分 4.2.1 lv_draw_gd32_ipa_init 4.2.2 lv_draw_gd32_ipa_blend_fill 4.2.3 lv_dra…

Web API节点操作

1、节点概述 网页中的所有内容都是节点&#xff08;标签、属性、文本、注释等&#xff09;&#xff0c;在DOM 中&#xff0c;节点使用 node 来表示。HTML DOM 树中的所有节点均可通过 JavaScript 进行访问&#xff0c;所有 HTML 元素&#xff08;节点&#xff09;均可被修改&a…

(JavaP1177 )【模板】快速排序

【模板】快速排序 一、题目描述 利用快速排序算法将读入的 NNN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料&#xff0c;掌握后独立完成。&#xff08;C 选手请不要试图使用 STL&#xff0c;虽然你…