kubectl常用命令使用

本文详细介绍了kubectl常用命令,包括create、delete、get、run、expose、set等,展示了如何通过这些命令创建、删除资源,获取资源信息,以及配置应用资源。还涵盖了关键参数分类和使用示例。

kubectl用法概述

kubectl [command] [TYPE] [NAME] [flags]

其中,command、TYPE、NAME、flags的含义如下。

(1)command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
(2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。

# kubectl get pod pod1
# kubectl get pods pod1
# kubectl get po pod1

(3)NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
(4)flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。

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

// 获取多个Pod的信息
[root@master ~]# kubectl get pods pod1 pod2

// 获取多种对象的信息
[root@master ~]# kubectl get pod/pod1 rc/rc1

//同时应用多个yaml文件,以多个-f file参数表示
[root@master ~]#  kubectl get pod -f pod1.yaml -f pod2.yaml
[root@master ~]#  kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml

Kubectl常用参数分类

在这里插入图片描述

基础命令

create,delete,get,run,expose,set,explain,edit

create命令

根据文件或者输入来创建资源

//创建Deployment和Service资源
[root@master ~]# kubectl create -f demo-deployment.yaml
[root@master ~]# kubectl create -f demo-service.yaml

[root@master ~]# kubectl create deployment deploy-web --image=itlang11:v0.1 --replicas=3
deployment.apps/deploy-web created

[root@master ~]# kubectl get pods
NAME                          READY   STATUS              RESTARTS   AGE
apache-594d8494b4-s6dfd       0/1     ImagePullBackOff    0          26m
deploy-web-79df5694b9-2sh6d   0/1     ImagePullBackOff    0          64s
deploy-web-79df5694b9-5lvqk   0/1     ImagePullBackOff    0          64s
deploy-web-79df5694b9-bqxpb   0/1     ContainerCreating   0          64s

delete命令

删除资源

//根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
[root@master ~]# kubectl delete -f demo-deployment.yaml
[root@master ~]# kubectl delete -f demo-service.yaml

//也可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源
[root@master ~]# kubectl delete deployment deploy-web
deployment.apps "deploy-web" deleted

[root@master ~]# kubectl get pods
NAME                      READY   STATUS             RESTARTS   AGE
apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          29m
nginx-6799fc88d8-nbgc2    1/1     Running            0          35h

get 命令

获得资源信息

// 查看所有的资源信息
[root@master ~]# kubectl get all
$ kubectl get --all-namespaces

//  查看pod列表
[root@master ~]# kubectl get pod

// 显示pod节点的标签信息
[root@master ~]# kubectl get pod --show-labels

// 根据指定标签匹配到具体的pod
[root@master ~]# kubectl get pods -l app=example

// 查看node节点列表
[root@master ~]# kubectl get node

// 显示node节点的标签信息
[root@master ~]# kubectl get node --show-labels

// 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
[root@master ~]# kubectl get pod -o wide

// 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
[root@master ~]# kubectl get svc
[root@master ~]# kubectl get svc -n kube-system

// 查看命名空间
[root@master ~]# kubectl get ns
[root@master ~]# kubectl get namespaces

// 查看所有pod所属的命名空间
[root@master ~]# kubectl get pod --all-namespaces

// 查看所有pod所属的命名空间并且查看都在哪些节点上运行
[root@master ~]# kubectl get pod --all-namespaces  -o wide

// 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
[root@master ~]# kubectl get rs

// 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
[root@master ~]#$ kubectl get deploy -o wide
[root@master ~]# kubectl get deployments -o wide

run 命令

在集群中创建并运行一个或多个容器镜像。

语法:run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…]

// 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例
[root@master ~]# kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80


//示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例,并绑定到k8s-node1上
[root@master ~]# kubectl run nginx --image=nginx:1.10 --replicas=3 --labels="app=example" --port=80 --overrides='{"apiVersion":"apps/v1","spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/hostname":"k8s-node1"}}}}}'

expose 命令

创建一个service服务,并且暴露端口让外部可以访问

// 创建一个nginx服务并且暴露端口让外界可以访问
[root@master ~]# kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service

set 命令

配置应用的一些特定资源,也可以修改应用已有的资源

使用 kubectl set --help查看,它的子命令,env,image,resources,selector,serviceaccount,subject。
语法:resources (-f FILENAME | TYPE NAME) ([–limits=LIMITS & --requests=REQUESTS]

kubectl set resources 命令

这个命令用于设置资源的一些范围限制

资源对象中的Pod可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。

对于每个Pod资源,如果指定了Limits(限制)值,并省略了Requests(请求),则Requests默认为Limits的值。

可用资源对象包括(支持大小写):replicationcontrollerdeploymentdaemonsetjobreplicaset

// 将deployment的nginx容器cpu限制为“200m”,将内存设置为“512Mi”
[root@master ~]#  kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi

// 设置所有nginx容器中 Requests和Limits
[root@master ~]#  kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi

// 删除nginx中容器的计算资源值
[root@master ~]#  kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0

kubectl set selector 命令

设置资源的 selector(选择器)。如果在调用"set selector"命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。

selector必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符" - " 、点".“和下划线” _ "。如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

注意:目前selector命令只能用于Service对象。

语法:selector (-f FILENAME | TYPE NAME) EXPRESSIONS [–resource-version=version]

kubectl set image 命令

用于更新现有资源的容器镜像。
可用资源对象包括:pod (po)replicationcontroller (rc)deployment (deploy)daemonset (ds)jobreplicaset (rs)

语法:image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 … CONTAINER_NAME_N=CONTAINER_IMAGE_N

// 将deployment中的nginx容器镜像设置为“nginx:1.9.1”
[root@master ~]# kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1

// 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1”
[root@master ~]# kubectl set image deployments,rc nginx=nginx:1.9.1 --all

// 将daemonset abc的所有容器镜像更新为“nginx:1.9.1”
[root@master ~]# kubectl set image daemonset abc *=nginx:1.9.1

// 从本地文件中更新nginx容器镜像
[root@master ~]# kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
<think>我们被要求提供kubectl常用命令,并且有多个引用可供参考。引用[1]和[2]都提供了kubectl常用命令,引用[3]是一个具体的expose命令示例。 根据引用[1]和[2],我们可以整理出常用的kubectl命令,并按照一定的逻辑进行分组,以便用户理解和使用。 注意:我们还需要遵循系统级指令,包括使用正确的LaTeX格式(但在这个问题中,主要是命令列表,可能不需要数学公式,但如果有变量说明,我们会用行内公式格式),使用中文,生成相关问题等。 我们计划: 1. 分类整理常用命令(如查看资源、操作资源、调试等) 2. 每个命令给出示例和简短说明 3. 根据引用内容,注意命名空间参数的使用 4. 在最后生成相关问题 注意:引用[1]中提到了-n参数用于指定命名空间,默认为default。引用[2]中提供了很多简写形式(如cm, sa, ds, deploy, rs, sts, jobs, ing, ns)以及一些查看资源使用情况的命令(需要heapster或metrics-server支持)。 我们还可以补充一些其他常用命令,比如创建、删除、编辑等,但引用中未直接给出,但用户可能需要。不过,根据问题,用户要求的是常用命令,我们主要基于引用提供的信息,适当补充一些基本命令。 由于引用[3]给出了一个expose命令的示例,我们也会包含它。 结构: 一、查看资源 二、操作资源(如创建、删除、编辑等) 三、调试和日志 四、其他常用命令 注意:引用中提供的信息有限,我们以引用为主,适当补充最常用的命令(如kubectl create, kubectl apply, kubectl delete, kubectl logs等),因为这些命令非常基础且常用。 开始整理: </think> 以下是 Kubernetes 命令行工具 `kubectl` 的常用命令整理,结合集群资源管理和日常操作场景分类说明: --- ### **1. 资源查看命令** - **查看资源列表** ```bash kubectl get <资源类型> -n <命名空间> # 默认命名空间为 default ``` 常用资源类型简写: `pod`(容器组)、`svc`(服务)、`deploy`(部署)、`cm`(ConfigMap)、`ing`(Ingress)、`ns`(命名空间)、`rs`(ReplicaSet)、`sts`(StatefulSet)、`jobs`(Job) 示例: ```bash kubectl get pods -A # 查看所有命名空间的 Pod kubectl get deploy -n test # 查看 test 命名空间的部署 ``` - **查看资源详情** ```bash kubectl describe <资源类型>/<资源名> -n <命名空间> ``` 示例: ```bash kubectl describe pod/nginx-7dfd6f7b5c-abcde -n default ``` - **查看资源使用指标**(需安装 metrics-server) ```bash kubectl top nodes # 节点资源使用 kubectl top pods # Pod 资源使用 ``` --- ### **2. 资源操作命令** - **创建/更新资源** ```bash kubectl apply -f <YAML文件> # 通过配置文件创建或更新 kubectl create deployment nginx --image=nginx # 直接创建部署 ``` - **暴露服务** ```bash kubectl expose deploy/nginx --port=80 --target-port=80 --type=NodePort ``` 此命令将部署 `nginx` 暴露为 NodePort 类型服务,外部可通过节点 IP 访问[^3]。 - **删除资源** ```bash kubectl delete <资源类型>/<资源名> -n <命名空间> kubectl delete -f <YAML文件> # 通过配置文件删除 ``` --- ### **3. 调试与日志命令** - **查看日志** ```bash kubectl logs <Pod名> -n <命名空间> # 查看 Pod 日志 kubectl logs -f <Pod名> -c <容器名> # 实时跟踪容器日志 ``` - **进入容器终端** ```bash kubectl exec -it <Pod名> -n <命名空间> -- /bin/bash ``` - **端口转发**(本地访问集群内服务) ```bash kubectl port-forward svc/<服务名> 8080:80 -n <命名空间> ``` --- ### **4. 集群管理命令** - **查看集群信息** ```bash kubectl cluster-info # 集群基本信息 kubectl get componentstatuses # 组件状态(简写 `kubectl get cs`)[^2] kubectl get nodes # 查看所有节点 ``` - **上下文与配置** ```bash kubectl config view # 查看 kubeconfig 配置 kubectl config use-context <上下文名> # 切换集群上下文 ``` --- ### **5. 实用简写速查** | 资源类型 | 简写 | 示例命令 | |----------------|------|--------------------------| | `configmaps` | `cm` | `kubectl get cm -A` | | `serviceaccounts` | `sa` | `kubectl get sa -A` | | `daemonsets` | `ds` | `kubectl get ds -A` | | `replicasets` | `rs` | `kubectl get rs -A` | | `statefulsets` | `sts`| `kubectl get sts -A` | | `jobs` | `jobs`| `kubectl get jobs -A` | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值