K8S(六)—kubectl

2023-12-16 05:05:15

这里写目录标题

Kubectl

kubectl 是 Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互、管理资源、执行操作以及获取有关集群和应用程序的信息。以下是一些常用的 kubectl 命令及其详细介绍:

  1. 基本信息和状态查询命令

    • kubectl version:显示 Kubernetes 客户端和服务器的版本信息。
    • kubectl cluster-info:显示集群的基本信息,如控制平面的地址和端口。
    • kubectl get nodes:获取集群中的节点列表。
    • kubectl get pods:获取所有命名空间中的 Pod 列表。
    • kubectl get services:获取所有命名空间中的服务列表。
  2. 资源管理命令

    • kubectl create:创建资源对象,如 Pod、Service、Deployment 等。
    • kubectl apply:将配置文件中的资源对象应用到集群。
    • kubectl delete:删除资源对象。
    • kubectl scale:调整副本数。
    • kubectl expose:将 Deployment 或 Replication Controller 暴露为 Service。
  3. 资源查询和描述命令

    • kubectl describe:显示资源对象的详细信息,如 Pod、Service、Node 等。
    • kubectl logs:查看容器的日志。
    • kubectl get events:获取事件列表,显示有关集群中发生的事件的信息。
  4. 应用程序管理命令

    • kubectl exec:在容器中执行命令。
    • kubectl port-forward:将本地端口与容器端口进行转发。
    • kubectl run:创建一个 Pod。
  5. 命名空间命令

    • kubectl create namespace:创建命名空间。
    • kubectl get namespaces:获取命名空间列表。
  6. 配置和上下文命令

    • kubectl config use-context:切换到不同的集群和上下文。
    • kubectl config current-context:显示当前上下文。
    • kubectl config view:查看和管理配置文件。
  7. 升级和回滚命令

    • kubectl rollout status:监控 Deployment、DaemonSet 或 StatefulSet 升级的状态。
    • kubectl rollout history:查看资源对象的版本历史。
    • kubectl rollout undo:回滚到以前的版本。
  8. 插件和其他命令

    • kubectl plugin:管理 kubectl 插件。
    • kubectl apply -f:应用配置文件。
    • kubectl get -o yaml:获取资源对象的 YAML 格式配置。

以上只是一些常用的 kubectl 命令,Kubernetes 提供了更多功能丰富的命令用于集群管理和应用程序部署。您可以通过运行 kubectl --help 查看完整的命令列表以及每个命令的选项和说明。

delete

kubectl delete 是 Kubernetes 命令行工具中的一个子命令,用于从 Kubernetes 集群中删除资源对象。使用 kubectl delete 命令可以删除 Pod、Deployment、Service、Namespace 等各种 Kubernetes 资源。以下是 kubectl delete 命令的详细介绍:

基本用法

kubectl delete RESOURCE_TYPE RESOURCE_NAME
  • RESOURCE_TYPE: 要删除的资源类型,如 pod、deployment、service 等。
  • RESOURCE_NAME: 要删除的资源对象的名称。

删除指定命名空间中的资源

可以使用 -n--namespace 参数指定要删除资源所在的命名空间。如果不指定命名空间,则默认为当前命名空间。

kubectl delete RESOURCE_TYPE RESOURCE_NAME -n NAMESPACE

删除所有资源

如果要删除一个命名空间中的所有资源,可以使用 --all 参数。

kubectl delete RESOURCE_TYPE --all -n NAMESPACE

强制删除

默认情况下,kubectl delete 命令将会尝试优雅地删除资源,即先发送一个删除信号给资源对象,然后等待资源对象自行终止。如果资源对象没有正确终止,可以添加 --grace-period=0 参数来立即删除资源。

kubectl delete RESOURCE_TYPE RESOURCE_NAME --grace-period=0

删除符合条件的资源

可以使用 --selector 参数删除符合特定标签选择器的资源。

kubectl delete RESOURCE_TYPE --selector=LABEL_SELECTOR

删除指定文件中定义的资源

可以使用 -f--filename 参数指定一个 YAML 或 JSON 文件,其中定义了要删除的资源对象的信息。

kubectl delete -f FILENAME

常见的 RESOURCE_TYPE 类型

以下是一些常见的 RESOURCE_TYPE 类型:

  • pod: 删除一个或多个 Pod。
  • deployment: 删除一个或多个 Deployment。
  • service: 删除一个或多个 Service。
  • namespace: 删除一个命名空间及其所有资源。
  • configmap: 删除一个或多个 ConfigMap。
  • secret: 删除一个或多个 Secret。
  • ingress: 删除一个或多个 Ingress。

请注意,在使用 kubectl delete 命令时,请谨慎操作,以免意外删除重要的资源。确保在删除前确认您要删除的资源和命名空间。

kubectl delete pod k8s-nginx2-7d9f66c959-j2dqw

删除其中一个,查看是否自动启动其他容器填充

[root@k8smaster1 ~]# kubectl get rs
NAME                    DESIRED   CURRENT   READY   AGE
k8s-nginx-75f95db655    3         3         1       20m
k8s-nginx2-7d9f66c959   3         3         3       8m11s
[root@k8smaster1 ~]# kubectl get pod -o wide
NAME                          READY   STATUS    RESTARTS   AGE     IP               NODE       NOMINATED NODE   READINESS GATES
...
k8s-nginx2-7d9f66c959-sqglm   1/1     Running   0          8m18s   10.244.185.198   k8snode2   <none>           <none>
k8s-nginx2-7d9f66c959-v5gfm   1/1     Running   0          32s     10.244.185.199   k8snode2   <none>           <none>
k8s-nginx2-7d9f66c959-xnjv7   1/1     Running   0          8m18s   10.244.185.196   k8snode2   <none>           <none>

get

explain

kubectl explain 是一个用于查看 Kubernetes 资源对象及其字段的详细说明的命令。它可以帮助您了解 Kubernetes API 中每个资源类型的属性和配置选项。以下是对 kubectl explain 命令的详细解析:

命令格式:

kubectl explain <资源类型> [选项]

参数说明:

  • <资源类型>:指定要查看的资源类型,如 poddeploymentservice 等。
  • [选项]:可选参数,用于指定要查看的属性或字段。

使用示例:

  1. 查看资源类型的基本信息:

    kubectl explain <资源类型>
    
  2. 查看资源类型的某个字段的详细信息:

    kubectl explain <资源类型>.<字段>
    
  3. 查看嵌套字段的详细信息:

    kubectl explain <资源类型>.<嵌套字段>.<子嵌套字段>
    

示例解释:

假设您想要了解 Pod 的 spec 字段的详细信息,可以执行以下命令:

kubectl explain pod.spec

这将显示 Pod 资源类型的 spec 字段的详细信息,包括该字段的类型、描述、可能的值范围等。

如果您想要查看嵌套字段,例如查看 Podspec.containers 字段的详细信息,可以执行以下命令:

kubectl explain pod.spec.containers

这将显示 Pod 资源类型中的 spec 字段的 containers 字段的详细信息,以及它包含的属性和值的描述。

通过使用 kubectl explain 命令,您可以在命令行中方便地查看 Kubernetes 资源对象的详细说明,从而更好地了解如何配置和使用这些资源。这对于编写和管理 Kubernetes 配置文件以及进行资源操作非常有帮助。

[root@k8smaster ~]# kubectl explain ResourceQuota

[root@k8smaster ~]# kubectl explain ResourceQuota.metadata

apply

kubectl apply 是用于将 Kubernetes 资源配置应用到集群中的命令。它可以用来创建、更新或删除资源,并且支持声明式配置,使得您可以通过修改配置文件来管理资源状态。以下是对 kubectl apply 命令的详细解析:

命令格式:

kubectl apply -f <配置文件> [选项]

参数说明:

  • -f <配置文件>:指定要应用的资源配置文件,可以是 YAML 或 JSON 格式。
  • [选项]:可选参数,用于指定命名空间、输出格式等。

使用示例:

  1. 创建或更新资源:

    kubectl apply -f <配置文件>
    
  2. 删除资源:

    kubectl delete -f <配置文件>
    

特点和功能:

  • 声明式配置kubectl apply 支持声明式配置,即您可以通过修改配置文件来定义所需的资源状态,而不必手动执行多个命令来达到目标状态。

  • 幂等性kubectl apply 是幂等的,这意味着无论您执行多少次相同的应用操作,最终结果都会是一样的,而不会引起冲突或错误。

  • 创建与更新:如果资源不存在,kubectl apply 会创建它;如果资源已存在,但与配置文件不匹配,它会更新资源的配置以符合文件中的定义。

  • 局部更新kubectl apply 可以部分更新资源,只更新配置文件中指定的字段,而不影响其他字段的值。

  • 命名空间支持:您可以通过 -n--namespace 选项指定要应用资源的命名空间。

  • 多文件应用:您可以一次性应用多个配置文件,kubectl apply -f <文件1> -f <文件2>

  • 输出格式:可以使用 --dry-run-o--output 选项指定输出的格式,如 jsonyaml 等。

使用示例解释:

假设您有一个名为 deployment.yaml 的配置文件,其中定义了一个 Deployment 资源。通过以下命令,您可以将此配置文件中定义的 Deployment 应用到集群中:

kubectl apply -f deployment.yaml

如果此 Deployment 已存在,但是配置文件中的定义与现有资源不同,kubectl apply 将会更新现有的 Deployment 以匹配配置文件中的定义。

文章来源:https://blog.csdn.net/qq_51010919/article/details/135027258
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。