3. K8S基础系列篇(3) kubectl命令的使用

3. kubectl命令的使用

3.1 kubectl命令格式

kubectl 作为客户端 CLI 工具,可以让用户通过命令行对 Kubernetes 集群进行操作。
命令行语法:

kubectl [command] [TYPE] [NAME] [flags]
  • command:子命令,用于操作资源对象。例如: create, get, describe, delete等。
  • TYPE: 要操作的资源类型,类型名称大小写敏感。
  • NAME: 要操作的资源对象名称,大小写敏感。
  • flags:命令行选项

在一个命令行中可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示:

  • 获取多个相同类型资源的信息。
  • 获取多种不同类型对象的信息。
  • 同时应用多个YAML文件,以多个-f file参数表示。

3.2 kubectl子命令详解

包括资源对象的创建、删除、查看、修改、配置、运行等。
基础命令
K8S高级命令
K8S其他命令
kubectl可操作的资源对象列表,可以通过kubectl api-resources命令进行查看.

get命令常用输出格式
语法:

kubectl [command] [TYPE] [NAME]  -o=<output_format>

get命令常用输出格式
-n或–namespace:命令执行的目标名称空间.

3.3 kubectl命令常用操作

3.3.1 创建资源对象
  1. 命令行式创建名为develop的namespace对象
$ kubectl create namespace develop
  1. 声明式创建名为development和production的namespace对象: two-ns.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: development
  
---

apiVersion: v1
kind: Namespace
metadata:
  name: production 
$ kubectl apply -f two-ns.yaml
3.3.2 查看资源对象

kubectl get命令常用于查看同一资源类型的一个或多个资源对象,可以使用-o
--output参数自定义输出格式,还可以通过-w--watch参数开启对资源对象更新的监控 。

  • 列出所有Pod
kubectl get pods
kubectl get pods -o wide
  • 列出指定名称的RC
kubectl get replicationcontroller <rc-name>
  • 列出所有RC和Service
kubectl get rc,services
  • 列出所有Daemonset
kubectl get ds
  • 列出在节点server01上运行的所有Pod
$ kubectl get pods --field-selector=spec.nodeName=server01
  • 列出系统上所有的Namespace资源对象
$ kubectl get namespaces

列出系统上所有的Namespace资源对象

  • 一次查看多个资源类别下的资源对象
$ kubectl get pods,services -o wide

一次查看多个资源类别下的资源对象

  • 列出kube-namespace名称空间中拥有k8s-app标签名称的所有Pod对象
$ kubectl get pods -l k8s-app -n kube-system

列出kube-namespace名称空间中拥有k8s-app标签名称的所有Pod对象

  • 获取指定Namespace对象中的资源对象的信息
$ kubectl get pods -n kube-system

获取指定Namespace对象中的资源对象的信息

  • 取出kube-system名称空间中带有k8s-app=kube-dns标签的Pod对象的资源名称
$ kubectl get pods -l k8s-app=kube-dns -n kube-system -o jsonpath="{.items[0].metadata.name}"
  • 查看kube-system名称空间中API Server相关Pod对象的资源配置清单(期望的状态)及当前的状态信息,并输出为YAML格式
$ kubectl get pods kube-apiserver-ops200 -o yaml -n kube-system
  • kubectl describe命令还能显示当前对象相关的其他资源对象
  • 查看kube-system名称空间中拥有标签component=kube-apiserver的Pod对象的详细描述信息
$ kubectl describe pods -l component=kube-apiserver -n kube-system
  • 打印容器中的日志信息
取出kube-system名称空间中带有指定标签的一个Pod对象
$ DNS_POD=$(kubectl get pods -l k8s-app=kube-dns -n kube-system -o jsonpath="{.items[0].metadata.name}")
# 查看该Pod对象的日志
$ kubectl logs $DNS_POD -n kube-system
3.3.3 查看资源对象详细信息

kubectl describe命令更侧重于描述指定资源的各方面详细信息,通过对 API Server
的多个API调用来构建结果视图。例如通过 kubectl describe node 命令不仅会返回节点信息,还会返回在其上运行的 Pod 的摘要、节点事件等信息。

kubectl describe:显示一个或多个资源的详细信息

  • 显示名称为<node-name>的节点详细信息
kubectl describe nodes <node-name>
  • 显示名称为<pod-name>的Pod的详细信息
kubectl describe pods/<pod-name>
  • 显示名称为<rc-name>的RC控制器管理的所有Pod的详细信息
kubectl describe pods  <rc-name>
  • 描述所有Pod的详细信息
kubectl describe pods
3.3.4 删除资源对象

kubectl delete该命令可以使用文件、 stdin 的输入删除指定的资源对象,还可以通过标签选择器、名
称、资源选择器等条件来限定待删除的资源范围。

kubectl delete -f  pod.yaml
  • 先查看, 再删除dev名称空间中名为demoapp的Service资源对象
$ kubectl get services -n dev
$ kubectl delete services demoapp -n dev
  • 删除kube-system名称空间中带有k8s-app=kube-proxy标签的所有Pod对象 危险操作
$ kubectl delete pods -l k8s-app=kube-proxy -n kube-system
  • 删除指定名称空间中的所有某类对象
kubectl delete TYPE --all -n NS格式的命令
  • 删除所有带有'<label-key>=<label-value>'标签的Pod和Service
kubectl delete pods, services -l <label-key>=<label-value>
  • 删除所有Pod,包括未初始化的Pod
kubectl delete pods -all

3.4 Pod中的容器常用操作

3.4.1 进入Pod中的容器运行命令

kubectl exec在Pod容器中运行命令

  • 在名称为<pod-name>的Pod的第1个容器中运行date命令并打印输出结果
kubectl exec <pod-name> --  date
  • 在指定的容器中运行date命令并打印输出结果
kubectl exec <pod-name> -c <container_name> -- date
  • 在Pod的第1个容器中运行/bin/bash命令进入交互式TTY终端界面
kubectl exec -it <pod-name> --  /bin/bash
3.4.2 打印Pod中容器的日志

kubectl logs: 打印Pod中容器的日志

kubectl  logs <pod-name>
  • 显示Pod中名称为<container-name>的容器输出到stdout的日志
kubectl logs <pod-name> -c <container-name>
  • 持续监控显示Pod中的第1个容器输出到stdout的日志
kubectl logs -f <pod-name>
  • 在线编辑运行中的资源对象
kubectl edit deploy nginx
  • 在容器和Node之间复制文件
kubectl cp nginx-dfd-df:/etc/fstab    /tmp
  • 设置资源对象的标签
kubectl label namespaces default  testing=true
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevSecOps云原生LYJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值