20221218 4. kubectl 常用命令练习

语法规则

kubectl [command] [TYPE] [NAME] [flags]
  • command :指定要对一个或多个资源执行的操作,例如 create 、 get 、 describe 、 delete

  • TYPE :指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式

    kubectl get pod pod1
    kubectl get pods pod1
    kubectl get po pod1
    
  • NAME :指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息。在对多个资源执行操作时,您可以按类型和名称指定每个资源,或指定一个或多个文件:

    # 资源类型相同
    kubectl get pod example-pod1 example-pod2
    
    #资源类型不同
    kubectl get pod/example-pod1 replicationcontroller/example-rc1
    
    #用文件指定资源
    kubectl get -f pod.yaml
    
  • flags : 指定可选的参数。例如,可以使用 -s 或 -server 参数指定 Kubernetes API 服务器的地址和端口

注意:从命令行指定的参数会覆盖默认值和任何相应的环境变量

帮助命令kubectl help

资源缩写


资源名 缩写名 API分组 按命名空间 资源类型
configmaps cm _ true ConfigMap
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
pods po true Pod
secrets true Secret
serviceaccounts sa true ServiceAccount
services svc true Service
daemonsets ds apps true DaemonSet
deployments deploy apps true Deployment
statefulsets sts apps true StatefulSet
horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler
cronjobs cj batch true CronJob
jobs batch true Job
ingresses ing extensions true Ingress
poddisruptionbudgets pdb policy true PodDisruptionBudget
clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io false ClusterRole
rolebindings rbac.authorization.k8s.io true RoleBinding
roles rbac.authorization.k8s.io true Role
storageclasses sc storage.k8s.io false StorageClass

get

列出一个或多个资源

帮助命令:kubectl get --help

# 查看集信息
kubectl cluster-info

# 查看集群状态
kubectl get cs

# 查看集群节点信息
kubectl get nodes
# 查看集群命名空间
kubectl get ns

# 查看指定命名空间的服务
kubectl get svc -n kube-system

# 以纯文本输出格式列出所有 pod
kubectl get pods

# 以纯文本输出格式列出所有 pod,并包含附加信息(如节点名)
kubectl get pods -o wide

# 以纯文本输出格式列出具有指定名称的副本控制器。提示:您可以使用别名 'rc' 缩短和替换'replicationcontroller' 资源类型。
kubectl get replicationcontroller <rc-name>

# 以纯文本输出格式列出所有副本控制器和服务。
kubectl get rc,services

# 以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集。
kubectl get ds --include-uninitialized

# 列出在节点 server01 上运行的所有 pod
kubectl get pods --field-selector=spec.nodeName=server01
# 将pod信息格式化输出到一个yaml文件
kubectl get pod web-pod-13je7 -o yaml

可选参数

  • 使用 -o--output 参数自定义输出格式

  • 指定 -w--watch 参数以开始观察特定对象的更新

describe

显示一个或多个资源的详细状态,默认情况下包括未初始化的资源

帮助命令:kubectl describe --help

# 显示名称为 <node-name> 的节点的详细信息
kubectl describe nodes <node-name>

# 显示名为 <pod-name> 的 pod 的详细信息
kubectl describe pods/<pod-name>

# 显示由名为 <rc-name> 的副本控制器管理的所有 pod 的详细信息。
# 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。
kubectl describe pods <rc-name>

# 描述所有的 pod,不包括未初始化的 pod
kubectl describe pods --include-uninitialized=false

delete

从文件、stdin 或指定标签选择器、名称、资源选择器或资源中删除资源

# 使用 pod.yaml 文件中指定的类型和名称删除 pod
kubectl delete -f pod.yaml

# 删除标签名= <label-name> 的所有 pod 和服务
kubectl delete pods,services -l name=<label-name>

# 删除所有具有标签名称= <label-name> 的 pod 和服务,包括未初始化的那些。
kubectl delete pods,services -l name=<label-name> --include-uninitialized

# 删除所有 pod,包括未初始化的 pod
kubectl delete pods --all
kubectl delete pod tomcat9 --force --grace-period=0

exec

对 pod 中的容器执行命令。与docker的exec命令非常类似

语法:

kubectl exec [POD] -- [COMMAND]
# 从 pod <pod-name> 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。
kubectl exec <pod-name> -- date

# 运行输出 'date' 获取在容器的 <container-name> 中 pod <pod-name> 的输出。
kubectl exec <pod-name> -c <container-name> -- date

# 获取一个交互 TTY 并运行 /bin/bash <pod-name >。默认情况下,输出来自第一个容器。
kubectl exec -it <pod-name> /bin/bash

参数说明:

  • -i, --stdin=false: Pass stdin to the container

  • -t, --tty=false: Stdin is a TTY

logs

打印 Pod 中容器的日志

# 从 pod 返回日志快照。
kubectl logs <pod-name>

# 从 pod <pod-name> 开始流式传输日志。这类似于 'tail -f' Linux 命令。
kubectl logs -f <pod-name>
posted @ 2022-12-22 14:47  流星<。)#)))≦  阅读(90)  评论(0编辑  收藏  举报