跳到主要内容

kubectl

2024年08月18日
柏拉文
越努力,越幸运

一、kubectl cp


kubectl cpKubernetes 中用于在本地文件系统与 Pod 容器之间复制文件的命令。它类似于 Unix 系统中的 cp 命令,但它的作用是跨越 Kubernetes 集群进行文件传输。

使用 kubectl cp 可以将本地文件或目录复制到 Pod 中的容器,也可以将容器中的文件或目录复制到本地系统。这对于配置管理、日志调试、文件备份等操作非常有用。

语法

kubectl cp <source> <destination> [options]
  • source:源文件或目录,支持本地文件路径、容器内路径。

  • destination:目标文件或目录,支持容器内路径、或本地文件路径。

1.1 从本地复制文件到 Pod

kubectl cp /path/to/local/file POD_NAME:/path/in/container

1.2 从 Pod 复制文件到本地

kubectl cp POD_NAME:/path/in/container /path/to/local/file

二、kubectl run

**

三、kubectl get


kubectl get 用于获取 Kubernetes 集群中的资源信息。

3.1 常用标志

  • -o:指定输出格式(wide, yaml, json, name)。

  • --namespace-n:指定命名空间。

  • --all-namespaces:列出所有命名空间中的资源。

kubectl get all

kubectl get jobs

kubectl get secrets

kubectl get pods(po)

kubectl get pods 获取所有 Pods 的列表

kubectl get pods --show-labels: 列出集群中所有 Pod 及其标签

kubectl get pods --all-namespaces 查看 Pod 状态

kubectl get pods --namespace kube-system 查看 kube-system 命名空间中的所有 Pod

kubectl get pods --namespace kube-flannel 查看 kube-flannel 网络插件运行状态

kubectl get nodes(no)

kubectl get nodes 获取所有 Nodes

kubectl get nodes --show-labels: 列出集群中的节点及其标签

kubectl get clusters

kubectl get events(ev)

kubectl get configmap(cm)

kubectl get services(svc)

kubectl get services(svc) 获取所有 Services

kubectl get endpoints(ep)

kubectl get daemonsets(ds)

kubectl get namespaces(ns)

kubectl get pod [Pod Name]

kubectl get storageclasses

kubectl get ingresses(ing)

kubectl get networkpolicies

kubectl get replicasets(rs)

kubectl get node [Node Name]

kubectl get deployments(deploy)

kubectl get deployments(deploy) 获取所有 Deployments

kubectl get deployments --namespace kube-system 查看 kube-system 命名空间中的所有资源

kubectl get persistentvolumes(pv)

kubectl get componentstatuses(cs)

kubectl get service [Service Name]

kubectl get deployment [Deployment Name]

四、kubectl set

**

kubectl set image

kubectl set resources

五、kubectl top


六、kubectl edit


七、kubectl exec


kubectl execKubernetes 中用于在容器内执行命令的一个非常重要的命令。它可以让你直接进入到容器中,进行调试、执行诊断命令或进行一些临时的操作。常见的应用场景包括:访问容器中的文件系统、检查日志、调试服务等。

7.1 kubectl exec -it POD_NAME -- /bin/sh

kubectl exec -it POD_NAME -- /bin/sh: 进入容器并交互式操作

7.2 kubectl exec -it [POD_NAME] -- /bin/bash

kubectl exec -it [POD_NAME] -- /bin/bash: 进入容器并交互式操作

八、kubectl logs


kubectl logs 用于查看容器的标准输出和标准错误日志,通常用于调试和排查问题。

8.1 参数标志

  • -c:指定容器名称(如果 Pod 中有多个容器)。

  • --follow-f:实时查看日志。

  • --tail:显示日志的最后几行。

8.2 kubectl logs POD_NAME

kubectl logs POD_NAME 查看指定 Pod 中默认容器的日志

kubectl logs -l POD_NAME 实时查看指定 Pod 中容器的日志

8.3 kubectl logs POD_NAME --previous

kubectl logs POD_NAME --previous 查看已终止容器的日志(如果容器崩溃过)

8.4 kubectl logs POD_NAME -c CONTAINER_NAME

kubectl logs POD_NAME -c CONTAINER_NAME 查看指定容器的日志

九、kubectl scale


十、kubectl patch


十一、kubectl apply


kubectl apply 用于创建或更新资源。与 kubectl create 不同的是,apply 支持增量更新。

kubectl apply vs kubectl create:

  • kubectl apply: 创建或更新资源,常用于声明式管理。如果资源不存在,则创建它。如果资源已存在,则更新它,并尝试保留现有的字段。支持幂等性:多次运行同样的配置不会导致重复操作。适合使用 YAML/JSON 文件定义资源时,特别是需要频繁更新资源的场景。

  • kubectl create: 常用于手动管理或单次创建, 如果资源不存在,则创建它。如果资源已存在,则报错,不会自动更新。

11.1 参数标志

  • -f:指定配置文件路径,支持 YAMLJSON

  • --dry-run:验证配置文件内容,但不进行实际修改。

11.2 kubectl apply -f [YAML 配置文件]

kubectl apply -f [YAML 配置文件] 创建或更新资源

十二、kubectl label


kubectl label all

kubectl label jobs

kubectl label secrets

kubectl label pods(po)

kubectl label nodes(no)

kubectl label clusters

kubectl label events(ev)

kubectl label configmap(cm)

kubectl label services(svc)

kubectl label endpoints(ep)

kubectl label daemonsets(ds)

kubectl label namespaces(ns)

kubectl label pod [Pod Name]

kubectl label storageclasses

kubectl label ingresses(ing)

kubectl label networkpolicies

kubectl label replicasets(rs)

kubectl label node [Node Name]

kubectl label deployments(deploy)

kubectl label persistentvolumes(pv)

kubectl label componentstatuses(cs)

kubectl label service [Service Name]

kubectl label deployment [Deployment Name]

十三、kubectl proxy


十四、kubectl attach


十五、kubectl config


十六、kubectl create


kubectl create 用于创建 Kubernetes 资源,可以通过 YAML 文件、命令行等方式创建资源。

kubectl apply vs kubectl create:

  • kubectl apply: 创建或更新资源,常用于声明式管理。如果资源不存在,则创建它。如果资源已存在,则更新它,并尝试保留现有的字段。支持幂等性:多次运行同样的配置不会导致重复操作。适合使用 YAML/JSON 文件定义资源时,特别是需要频繁更新资源的场景。

  • kubectl create: 常用于手动管理或单次创建, 如果资源不存在,则创建它。如果资源已存在,则报错,不会自动更新。

16.1 参数标志

  • -f:指定配置文件路径,支持 YAMLJSON 文件。

  • --dry-run:验证资源创建,但不实际创建。

kubectl create quota

kubectl create secrete

kubectl create service

kubectl create configmap

kubectl create namespace

kubectl create deployment

kubectl create serviceaccount

kubectl create -f [YAML 配置文件]

kubectl create -f [YAML 配置文件] 根据 YAML 文件创建资源

十七、kubectl expose


kubectl expose pod

kubectl expose service

kubectl expose replicaset

kubectl expose deployment

kubectl expose replicationcontroller

十八、kubectl delete


kubectl delete 用于删除 Kubernetes 资源。

18.1 参数标志

  • -f:指定删除的资源文件(支持 YAML 和 JSON)。

  • --all:删除所有资源。

18.2 kubectl delete pods --all

18.3 kubectl delete pod POD_NAME

kubectl delete pod POD_NAME 删除指定 Pod

kubectl delete pod Pod_Name --force 强制删除指定 Pod

18.4 kubectl delete -f [YAML 配置文件]

kubectl delete -f [YAML 配置文件] 根据配置文件删除资源

18.5 kubectl delete all --all-namespaces

18.6 kubectl delete service SERVICE_NAME

18.7 kubectl delete deployment DEPLOYMENT_NAME

十九、kubectl explain


kubectl explain jobs

kubectl explain secrets

kubectl explain pods(po)

kubectl explain nodes(no)

kubectl explain clusters

kubectl explain events(ev)

kubectl explain configmap(cm)

kubectl explain services(svc)

kubectl explain endpoints(ep)

kubectl explain daemonsets(ds)

kubectl explain namespaces(ns)

kubectl explain pod [Pod Name]

kubectl explain storageclasses

kubectl explain ingresses(ing)

kubectl explain networkpolicies

kubectl explain replicasets(rs)

kubectl explain node [Node Name]

kubectl explain deployments(deploy)

kubectl explain persistentvolumes(pv)

kubectl explain componentstatuses(cs)

kubectl explain service [Service Name]

kubectl explain deployment [Deployment Name]

二十、kubectl rollout


20.1 kubectl rollout undo

20.2 kubectl rollout pause

20.3 kubectl rollout status

20.4 kubectl rollout resume

20.5 kubectl rollout history

二十一、kubectl describe


kubectl describe 用于查看 Kubernetes 资源的详细信息,帮助调试和了解资源的状态。

kubectl describe jobs

kubectl describe secrets

kubectl describe pods(po)

kubectl describe nodes(no)

kubectl describe clusters

kubectl describe events(ev)

kubectl describe configmap(cm)

kubectl describe services(svc)

kubectl describe endpoints(ep)

kubectl describe daemonsets(ds)

kubectl describe namespaces(ns)

kubectl describe pod [Pod Name]

kubectl describe pod [Pod Name] 查看指定 Pod 的详细信息

kubectl describe storageclasses

kubectl describe ingresses(ing)

kubectl describe networkpolicies

kubectl describe replicasets(rs)

kubectl describe node [Node Name]

kubectl describe node [Node Name] 查看指定 Node 的详细信息

kubectl describe deployments(deploy)

kubectl describe persistentvolumes(pv)

kubectl describe componentstatuses(cs)

kubectl describe service [Service Name]

kubectl describe service [Service Name] 查看指定 Service 的详细信息

kubectl describe deployment [Deployment Name]

kubectl describe deployment [Deployment Name] 查看 kube-system 命名空间下的 Pod 详细信息

二十二、kubectl autoscale


二十三、kubectl port-forward


二十四、kubeclt rolling-update