【K8S系列】第十讲:kubectl 命令大全

目录

序言

1.基本介绍

1.1 命令格式介绍

2 基础命令

2.1 create

2.2 delete

2.2.1 根据yaml删除资源

2.2.1  根据名称删除资源

2.3 get

2.3.1查看pod列表

2.3.2  查看node

2.3.3 查看svc

2.3.4 查看all

2.3.5 查看ns

2.3.4 查看deploy

2.3 run

 2.4 explain

2.5 edit

3.故障命令

3.1 describe

3.2 logs

3.2.1 查看容器快照

3.2.2 查看已停止的容器

3.3 exec

4.投票


序言

三言两语,不如细心探索。

今天整理了一下kubectl 命令,希望此文,能帮助读者对kubectl 命令有一个初步的了解

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

1.基本介绍

kubectl 作为客户端CLI工具,可以通过命令行的方式对Kubernetes集群进行操作。

1.1 命令格式介绍

 kubectl命令行的语法如下:

$ kubectl [command] [TYPE] [NAME] [flags]
  1. command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
  2. TYPE:资源对象的类型,区分大小写能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。
  3. NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表
  4. flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
$ kubectl get pod podtest
$ kubectl get pods podtest
$ kubectl get po podtest

2 基础命令

先介绍一下几个基础命令

  • create
  • delete
  • get
  • run
  • expose
  • set
  • explain
  • edit

2.1 create

create 命令:根据文件或者输入来创建资源

创建Deployment和Service资源 

$ kubectl create -f test-deployment.yaml
$ kubectl create -f test-service.yaml

2.2 delete

delete 命令:删除资源

2.2.1 根据yaml删除资源

根据yaml文件删除对应的资源,但是yaml文件并不会被删除,如下

$ kubectl delete -f test-deployment.yaml 
$ kubectl delete -f test-service.yaml

2.2.1  根据名称删除资源

可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源

$ kubectl delete 具体的资源名称

$ kubectl delete test-deploy

2.3 get

get 命令 :获得资源信息

2.3.1查看pod列表

$ kubectl get pod

显示pod节点的标签信息 

$ kubectl get pod --show-labels

根据指定标签匹配到具体的pod

$ kubectl get pods -l app=demo

查看pod详细信息,可以查看pod具体运行在哪个节点上

$ kubectl get pod -o wide

2.3.2  查看node

查看node节点列表

$ kubectl get node 

 显示node节点的标签信息

$ kubectl get node --show-labels

2.3.3 查看svc

查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息

$ kubectl get svc
$ kubectl get svc -n kube-system 

2.3.4 查看all

查看所有的资源信息

$ kubectl get all
$ kubectl get --all-namespaces

2.3.5 查看ns

$ kubectl get ns
$ kubectl get namespaces 

2.3.4 查看deploy

查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息

$ kubectl get deploy -o wide
$ kubectl get deployments -o wide

2.3 run

run 命令:在集群中创建并运行一个或多个容器镜像。

语法:

run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

示例:运行一个名称为nginx,副本数为3,标签为app=test,镜像为nginx:1.11,端口为80的容器实例

$ kubectl run nginx --replicas=3 --labels="app=test" --image=nginx:1.11 --port=80

 2.4 explain

explain 命令:用于显示资源文档信息

$ kubectl explain rs

2.5 edit

edit 命令: 用于编辑资源信息

编辑Deployment nginx的一些信息

$ kubectl edit deployment nginx

编辑service类型的nginx的一些信息
 

$ kubectl edit service/nginx

3.故障命令

故障排查和调试命令:

  1. describe
  2. logs
  3. exec
  4. attach
  5. port-foward
  6. proxy
  7. cp
  8. auth

3.1 describe

describe命令:显示特定资源的详细信息

查看test-nginx pod的详细状态

$ kubectl describe pod test-nginx

3.2 logs

logs命令:用于在pod中打印一个容器的日志

执行kubectl logs -h 可以查看kubectl logs的帮助信息

语法

  • kubectl  logs  [-f]   [-p]   POD    [-c CONTAINER]

-f:

  •  --follow[=false]: 指定是否持续输出日志
  • --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
  • --limit-bytes=0: 输出日志的最大字节数。默认无限制

-p:

  • --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
  • --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种
  • --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种
  • --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志
  • --timestamps[=false]: 在日志中包含时间戳

-c:

  •  --container="": 容器名

3.2.1 查看容器快照

 返回仅包含一个容器的pod nginx的日志快照

$ kubectl logs nginx

3.2.2 查看已停止的容器

返回pod test中已经停止的容器web-test的日志快照
 

$ kubectl logs -p -c test web-1
# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1

# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx

# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx

3.3 exec

exec命令:用于进入pod中查看pod内部信息

kubectl exec -it podName  -c  containerName -n namespace -- shell comand
 -c: --container="": 容器名。如果未指定,使用pod中的一个容器。
 -p: --pod="": Pod名。
 -i: --stdin[=false]: 将控制台输入发送到容器。
 -t: --tty[=false]: 将标准输入控制台作为容器的控制台输入。

示例:

# 默认在pod test的第一个容器中运行“date”并获取输出
$ kubectl exec test date

# 在pod test的容器ruby-container中运行“date”并获取输出
$ kubectl exec test -c ruby-container date

# 切换到终端模式,将控制台输入发送到pod test的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl exec test -c ruby-container -i -t -- bash -il

4.投票

原文地址:https://blog.csdn.net/weixin_36755535

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读942次。kube-controller-manager 和 kubelet 是异步工作的,这意味着延迟可能包括任何的网络延迟、apiserver 的延迟、etcd 延迟,一个节点上的负载引起的延迟等等。当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度的时间。_node-monitor-period
文章浏览阅读3.8k次。上篇文章详细介绍了弹性云混部的落地历程,弹性云是滴滴内部提供给网约车等核心服务的容器平台,其基于 k8s 实现了对海量 node 的管理和 pod 的调度。本文重点介绍弹性云的调度能力,分为以下部分:调度链路图:介绍当前弹性云调度体系链路,对架构体系有一个初步的认知k8s 调度能力的运用:整体介绍弹性云现在用到的 k8s 调度能力和对其的增强k8s 版本的升级:介绍到从 k8s 1.12 到 1...._滴滴机房 腾讯
文章浏览阅读897次。对于cpu来说,这种分配方式并不会有太大问题,因为cpu可以灵活调度,numa调度时我们只计算绑定了numa cpu的pod是可以接受的,但是对于内存来说,numa node上申请了的内存无法做到随时迁移,这就会导致调度器视角numa node的mem资源足够,但是等到pod真正使用时,由于没有绑定numa node的pod申请的内存,导致numa node的mem资源不足,造成swap中断或者远端内存申请,这会对绑定mem的pod来带来性能损耗。忽略了没有绑定numa node的pod资源。_kubectl numa
文章浏览阅读796次,点赞17次,收藏15次。只要在Service定义中设置了ClusterIp:None,就定义了一个HeadLess Service, 它与普通的Service关键区别在于它没有ClusterIp地址,如果解析HeadLess Service的DNS域名,则会返回该Service对应的全部Pod的EndPoint列表,这就意味着客户端是直接与后端的pod建立了TCP/IP链接进行通信的。一个Label是一个键值对。注解:属于资源对象的元数据,可以被理解为一种特殊的标签,不过更多的是与程序挂钩,通常用于实现资源对象属性的自定义扩展。
文章浏览阅读763次。但是此时如果配置成 NONE, 租户创建成功了,但是无法创建资源文件,也就是无法上传文件,可能 dolphinscheduler 团队就想着将文件上传到 hdfs,暂不支持本地。需要将 resource.storage.type 置为 NONE, 因为我之前用的 1.3.6 版本的时候,即使资源文件存在本地文件也需要配置成 hdfs。_[error] 2023-10-24 18:10:43.762 +0800 org.apache.dolphinscheduler.api.servic
文章浏览阅读2.7k次,点赞2次,收藏13次。公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。_k8s最新版本
文章浏览阅读1.8w次,点赞14次,收藏27次。能节省你在kubeadm init 时遇到问题的排错时间⌚️。整合了网上大佬
文章浏览阅读1.1k次,点赞2次,收藏7次。具体操作步骤可以参考之前的教程,建议是先安装一台,然后克隆虚拟机,这样速度快。注意:在克隆时记得修改Mac地址、IP地址、UUID和主机名。(最后别忘了保存下快照~)_部署k8s集群
文章浏览阅读863次,点赞23次,收藏16次。当部署完 Kubernetes,便拥有了一个完整的集群。一组工作机器,称为节点, 会运行容器化应用程序。每个集群至少有一个工作节点。工作节点会 托管Pod ,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和Pod。说人话版本:集群:cluster,多个几点被组织到一起共同为系统提供服务过程称之为集群。本质上是将承载同一个软件服务节点组织到一起,称之为该软件(服务)的集群,当然集群中的节点身份地位是不一样的。k8s集群也是如此,他也是多个节点组成。
文章浏览阅读943次。Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。Rancher 1.0版本在2016年就已发布,时至今日,Rancher已经成长为企业在生产环境中运行容器和Kubernetes的首要选择。_rancher管理k8s
文章浏览阅读742次,点赞2次,收藏3次。本篇来讲解如何在centos下安装部署高可用k8s集群。_kubeadm ha keepalived + nginx
文章浏览阅读1.9k次,点赞21次,收藏25次。那么这个空间设置成内存的2倍大小。点击IPv4设置--手动--添加--设置ip--设置DNS服务器,最后点击--“保存”;首先选中--“本地标准磁盘”,存储配置--自定义分区,点击--“完成”;在--主机名--设置主机名:(例如k8s-master01),点击--点击+,设置--挂载点/boot--期望容量,点击--添加挂载点;点击--+--挂载点swap--期望容量,点击--“添加挂载点”;默认选择--亚洲--上海,并调整日期和时间,点击--“完成”;设备类型--确认--LVM,卷组--选择“修改”;_euler 服务器搭建
文章浏览阅读1k次。在1.25版本的k8s集群中部署gpu-manage时,虽然显示gpu节点上gpu-manage的pod实例都是running状态,但是给pod申领。既可以用源码的Makefile自动编译打包成新的镜像,但是源码的。说明gpu-manager和容器运行时接口通信失败了。编译后的镜像在1.25版本的k8s中可以正常使用。,但是在k8s1.23版本之后,接口路径已经改为。资源时,却始终找不到有资源的节点。,另外有一些依赖需要国际上的支持。可以看到这里用的运行时接口是。查看节点的详情时,返回的。_launch gpu manager 报错 can't create container runtime manager: context dead
文章浏览阅读1k次,点赞18次,收藏16次。SelfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连结,self-Link是一个唯一的标识号,可以用于标识k8s集群当中的每个资源的对象。容器里使用的配置,在provisioner当中定义好环境变量,传给容器,storageclass的名称,NFS服务器的地址,NFS的目录。NFS的provisionner的客户端以pod的方式运行在集群当中,监听k8s集群当中PV的请求,然后动态的创建于NFS相关的PV。命名为 nfs-client-provisioner-clusterrole。
文章浏览阅读6.3k次,点赞2次,收藏20次。k8s证书过期解决方案之替换证书_k8s证书过期如何更换
文章浏览阅读1k次。KMS,Key Management Service,即密钥管理服务,在K8S集群中,以驱动和插件的形式启用对Secret,Configmap进行加密。以保护敏感数据
文章浏览阅读888次。exporter对于云服务的监控还是很不完美,毕竟每家都有自己的护城河。自动发现多实例这样的借助consul 阿波罗这样的会简单一些。aws可以借助cloudwatch这样的导入模板到grafana中。还是希望能将类似腾讯云云监控中的这些指标采集到prometheus中,但是这过程应该还很遥远grafana出图 prometheus查询语法这些东西有时间的好好研究一下。报警有必要进行分级别,收敛配置一下!_command: - "-redis.password-file=/redis_passwd.json
文章浏览阅读1k次。可以在此处(https://cloud.google.com/kubernetes-engine/docs/how-to/kube-dns)和此处(https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service)找到更多的详细信息。-or-ipvs/)和此处(https://arthurchiao.art/blog/cracking-k8s-node-proxy/)。_k8s默认命名空间
文章浏览阅读4.9k次,点赞11次,收藏32次。如果运行runc命令时提示:runc: error while loading shared libraries: libseccomp.so.2: cannot open shared object file: No such file or directory,则表明runc没有找到libseccomp,需要检查libseccomp是否安装,本次安装默认就可以查询到。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。_kubernetes 1.28
文章浏览阅读3.6w次,点赞118次,收藏144次。Canal 提供了网络功能,使得 Kubernetes 集群中的 Pod 可以相互通信,并与集群外部的服务进行通信。它通过网络插件的方式,为每个 Pod 分配唯一的 IP 地址,并管理网络流量的路由和转发。此外,Canal 还支持网络策略,用于定义 Pod 之间的通信规则和安全策略。Canal 基于 Calico 和 Flannel 项目,结合了二者的优点。它使用 Calico 的数据平面,提供高性能的网络转发和安全特性,同时使用 Flannel 的控制平面,实现 IP 地址管理和网络策略的配置。_k8s canal