3. K8S基础系列篇(3) kubectl命令的使用
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子命令详解
包括资源对象的创建、删除、查看、修改、配置、运行等。
kubectl可操作的资源对象列表,可以通过kubectl api-resources
命令进行查看.
get命令常用输出格式
语法:
kubectl [command] [TYPE] [NAME] -o=<output_format>
-n或–namespace:命令执行的目标名称空间.
3.3 kubectl命令常用操作
3.3.1 创建资源对象
- 命令行式创建名为develop的namespace对象
$ kubectl create namespace develop
- 声明式创建名为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
- 一次查看多个资源类别下的资源对象
$ kubectl get pods,services -o wide
- 列出kube-namespace名称空间中拥有k8s-app标签名称的所有Pod对象
$ kubectl get pods -l k8s-app -n kube-system
- 获取指定Namespace对象中的资源对象的信息
$ kubectl get pods -n kube-system
- 取出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
更多推荐
已为社区贡献7条内容
所有评论(0)