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

命令行工具kubectl

实验环境

安装好k8s集群

Deployment、Pod、Service三者之间的逻辑关系:

Deployment:控制Pod副本预期

Pod:管理容器

Service:对外发布服务

Service定义了一个服务访问的入口地址,前端应用通过这个入口地址访问其背后的一组由POD副本组成的集群实例(容器)。

Service与其后端Pod副本集群之间则是通过Label Selector实现无缝对接的,Deployment实际上用于保证Service的服务能力和服务质量始终符合预期标准。

一、kubectl语法格式

kubectl [command] [TYPE] [NAME]

kubectl获取帮助

     kubectl --help

查看具体某个操作的帮助

     kubectl get --help

1、command

指定要对资源执行的操作,例如create、get、describe和delete

2、TYPE

指定资源类型,资源类型是大小写敏感的,开发者能够以单数,复数和缩略的形式。

例如:pod/deploy/svc

kubectl get pod pod的名称

kubectl get pods pod的名称

kubectl get po pod的名称

可以缩写资源类型,例如:

po 代表 pods。

deploy 代表 deployments。

svc 代表 services

3、指定资源的名称,名称也是大小写敏感的。如果省略名称,则会显示所有的资源。

获取所有 Pod

kubectl get pods

二、kubectl子命令使用分类

1、基础命令

create:创建资源

expose:发布一个新的服务

run:运行一个pod

set:在对象上设置特定的功能

get:获取资源信息

edit:编辑资源

delete:删除资源

2、部署命令

rollout:管理资源的滚动更新和版本控制

scale:调整资源的副本数量,动态扩展或缩减

3、集群管理命令

cluster-info:显示集群的基本信息

top:查看集群中节点(Node)或Pod的资源使用情况,包括 CPU 和内存的消耗

4、故障诊断和调试命令

describe:查看资源的详细信息

logs:查看 Pod 的日志

exec:在 Pod 中执行命令

cp:复制文件到容器

5、高级命令

apply:应用配置文件(创建或更新资源)

6、设置命令

label:更新资源上的标签

7、其他命令

api-versions: 打印受支持的api版本

三、常用子命令实例

查看k8s版本信息

kubectl version

查看节点信息

kubectl get nodes

查看群集信息

kubectl cluster-info

1、创建名为nginx的deployment

kubectl create deployment nginx --image=nginx:1.20

将名为 nginx 的 Deployment 暴露为一个 Service,并指定 Service 的名称为 nginx-svc,端口为 80,类型为 NodePor

kubectl expose deployment nginx --name=nginx-svc --port=80 --type=NodePort

2、查看

获取 Kubernetes 集群中所有资源的详细信息,并以宽格式(wide)显示

kubectl get all -o wide

获取 Kubernetes 集群中 Deployment、Pod、Service 和 ReplicaSet 的详细信息,并以 宽格式(wide) 显示

kubectl get deploy,pod,svc,rs -o wide

获取名为 nginx 的 Pod 的详细信息

kubectl describe pod nginx

3、删除

删除 Kubernetes 集群中名为 nginx-svc 的 Service

kubectl delete service nginx-svc

删除 Kubernetes 集群中名为 nginx 的 Deployment

kubectl delete deployment nginx

删除 Kubernetes 集群中所有的 Deployment

kubectl delete deployment --all

删除 Kubernetes 集群中所有的 Service

kubectl delete service --all

删除 Kubernetes 集群中所有的资源,包括 Pod、Service、Deployment、ReplicaSet

kubectl delete all --all

4、服务扩容与缩容

kubectl create deployment nginx --image=nginx:1.20

将名为 nginx 的 Deployment 的副本数量扩展到 5 个

kubectl scale deployment nginx --replicas=5

获取 Kubernetes 集群中所有 Pod 的详细信息,并以宽格式(wide)显示

kubectl get pod -o wide

Pod的数量扩展为5个

编辑名为 nginx 的 Deployment 的配置

kubectl edit deployment nginx

修改:

获取 Kubernetes 集群中所有 Pod 的详细信息,并以宽格式(wide)显示

kubectl get pod -o wide

Pod的数量缩小为3个

5、服务升级(变更镜像)与回滚

(1)创建名为web的deployment并将名为 web 的 Deployment 暴露为一个 Service

kubectl create deployment web --image=nginx:1.20

kubectl expose deployment web --port=80 --type=NodePort

获取 Kubernetes 集群中所有 Deployment 的详细信息,并以宽格式(wide) 显示

kubectl get deployment -o wide

输出内容解析:

NAME:Deployment 的名称。

READY:当前 Ready 的副本数 / 期望的副本数。

UP-TO-DATE:已更新到最新版本的副本数。

AVAILABLE:当前可用的副本数。

AGE:Deployment 的创建时间。

CONTAINERS:Deployment 中使用的容器镜像。

IMAGES:容器镜像的名称。

SELECTOR:Deployment 使用的标签选择器。

更新名为 web 的 Deployment 中 nginx 容器的镜像为 httpd:latest,并记录本次更新的历史记录

kubectl set image deployment web nginx=httpd:latest --record

--record:记录此次更新,将其添加到 Deployment 的注解中,便于后续查看历史记录

获取 Kubernetes 集群中所有 Deployment 的详细信息,并以宽格式(wide) 显示

kubectl get deployment -o wide

查看集群IP并访问网页

kubectl get svc -o wide

curl 10.110.54.156

(2)回滚名为 web 的 Deployment 到上一个版本

kubectl rollout undo deployment web

获取 Kubernetes 集群中所有 Deployment 的详细信息

kubectl get deployment -o wide

(3)回滚到指定版本

查看名为 web 的 Deployment 的 更新历史记录

kubectl rollout history deployment web

将名为 web 的 Deployment 回滚到指定的历史版本2

kubectl rollout undo deployment web --to-revision=2

(4)使用kubectl cp给web的pod写入网页

kubectl get pod -o wide

echo "apache" > index.html

kubectl cp index.html web-77f47b4598-h6hxf:/usr/local/apache2/htdocs/

查看集群IP并访问网页

kubectl get svc -o wide

curl 10.110.54.156

curl 192.168.10.11:30278

常用命令集合

kubectl ceate         创建一个deployment或job来管理创建的容器

kubectl get          显示一个或多个资源,默认查看当前名称空间的资源 -A所有名称空间

kubectl expose       将一个资源暴露为service服务

kubectl describe      显示特定资源的详细信息

kubectl scale         扩容/缩容

kubectl set           更改现有的应用程序资源

kubectl rollout        资源回滚管理

kubectl delete       删除某个资源  强制删除:--force

Kubectl logs             查看 Pod 或容器的日志

相关文章:

  • 密码学中的盐值是什么?
  • RAII资源管理理解
  • Python 中的数据类型有哪些
  • 每日算法-250418
  • 智能化印刷新时代:Modbus 转profinet网关的完美融合,提升生产效率与环保标准
  • LangChain4j-第一篇 |几分钟完成deepseek 在线集成
  • 数据资产登记导则详解 | 企业如何规范化登记与管理数据资产?
  • ubuntu-24.04.2-live-server-arm64基于cloud-init实现分区自动扩容(LVM分区模式)
  • Selenium之 CSS 选择器详细讲解
  • 【笔记】【C++】【基础语法】作用域(scope)、持续时间(duration)和链接(linkage)
  • ChatGPT-o3辅助学术大纲效果如何?
  • 【linux学习】 Redhat9.5安装
  • 【单倍型理解及计算系列之一】单倍型基本概念以及检测原理
  • 桌面级OTA测试解决方案:赋能智能网联汽车高效升级
  • IO流(二)
  • Flink 2.0 编译
  • 高频面试题:Android MVP/MVVM/MVI这几种架构在实际生产中,各自的优缺点和适用场景是什么
  • [滑动窗口]209. 长度最小的子数组
  • 【算法笔记】整除与最大公约数(GCD)专题整理
  • 【多目标进化算法】NSGA-II 算法(结合例子)
  • 习近平向加蓬当选总统恩圭马致贺电
  • 87岁老人花3万多做“血液净化”延年益寿?医院“张主任”:我那是善意的欺骗
  • 世界读书日|南京图书馆开了首个网络文学主题阅读空间
  • 以优良作风激发改革发展动力活力,中管企业扎实开展深入贯彻中央八项规定精神学习教育
  • 对话|棋后居文君:创造历史之后,还有继续追梦的心
  • 两日内连续施压,特朗普再次喊话美联储降息