K8s 常用命令、对象名称缩写汇总

K8s 常用命令、对象名称缩写汇总

前言

在之前的文章中已经陆续介绍过 Kubernetes 的部分命令,本文将专题介绍 Kubernetes 的常用命令,处理日常工作基本够用了。

集群相关

1、查看集群信息

kubectl cluster-info # 输出信息Kubernetes master is running at https://172.17.xx.xx:6443CoreDNS is running at https://172.17.xx.xx:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyMetrics-server is running at https://172.17.xx.xx:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

2、查看集群服务

kubectl get apiservice🔔 全部为 True 则正常 # 输出信息NAME                                   SERVICE                      AVAILABLE   AGEv1.                                    Local                        True        76dv1.admissionregistration.k8s.io        Local                        True        76dv1.apiextensions.k8s.io                Local                        True        76dv1.apps                                Local                        True        76dv1.authentication.k8s.io               Local                        True        76dv1.authorization.k8s.io                Local                        True        76dv1.autoscaling                         Local                        True        76dv1.batch                               Local                        True        76dv1.certificates.k8s.io                 Local                        True        76dv1.coordination.k8s.io                 Local                        True        76dv1.events.k8s.io                       Local                        True        76dv1.helm.cattle.io                      Local                        True        10dv1.k3s.cattle.io                       Local                        True        10dv1.networking.k8s.io                   Local                        True        76dv1.rbac.authorization.k8s.io           Local                        True        76dv1.scheduling.k8s.io                   Local                        True        76dv1.storage.k8s.io                      Local                        True        76dv1beta1.admissionregistration.k8s.io   Local                        True        76dv1beta1.apiextensions.k8s.io           Local                        True        76dv1beta1.authentication.k8s.io          Local                        True        76dv1beta1.authorization.k8s.io           Local                        True        76dv1beta1.batch                          Local                        True        76dv1beta1.certificates.k8s.io            Local                        True        76dv1beta1.coordination.k8s.io            Local                        True        76dv1beta1.discovery.k8s.io               Local                        True        76dv1beta1.events.k8s.io                  Local                        True        76dv1beta1.extensions                     Local                        True        76dv1beta1.metrics.k8s.io                 kube-system/metrics-server   True        76dv1beta1.networking.k8s.io              Local                        True        76dv1beta1.node.k8s.io                    Local                        True        76dv1beta1.policy                         Local                        True        76dv1beta1.rbac.authorization.k8s.io      Local                        True        76dv1beta1.scheduling.k8s.io              Local                        True        76dv1beta1.storage.k8s.io                 Local                        True        76dv2beta1.autoscaling                    Local                        True        76dv2beta2.autoscaling                    Local                        True        76d

3、查看集群组件

kubectl get componentstatus # 输出信息NAME                 STATUS    MESSAGE             ERRORscheduler            Healthy   ok                  controller-manager   Healthy   ok                  etcd-0               Healthy   {"health":"true"}

4、查看集群版本

kubectl version --short 选项:精简输出信息--client 选项:之查看客户端版本 # 输出信息Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.12", GitCommit:"2cb4598553d0a2ca5f3eb7980c99cd8236cc5011", GitTreeState:"clean", BuildDate:"2021-06-16T13:00:29Z", GoVersion:"go1.15.13", Compiler:"gc", Platform:"linux/amd64"}Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.16+k3s-", GitCommit:"", GitTreeState:"clean", BuildDate:"2022-09-17T15:17:58Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}

5、查看集群 API 版本

kubectl api-versions # 输出信息admissionregistration.k8s.io/v1admissionregistration.k8s.io/v1beta1apiextensions.k8s.io/v1apiextensions.k8s.io/v1beta1apiregistration.k8s.io/v1apiregistration.k8s.io/v1beta1apps/v1authentication.k8s.io/v1authentication.k8s.io/v1beta1authorization.k8s.io/v1authorization.k8s.io/v1beta1autoscaling/v1autoscaling/v2beta1autoscaling/v2beta2batch/v1batch/v1beta1certificates.k8s.io/v1certificates.k8s.io/v1beta1coordination.k8s.io/v1coordination.k8s.io/v1beta1discovery.k8s.io/v1beta1events.k8s.io/v1events.k8s.io/v1beta1extensions/v1beta1helm.cattle.io/v1k3s.cattle.io/v1metrics.k8s.io/v1beta1networking.k8s.io/v1networking.k8s.io/v1beta1node.k8s.io/v1beta1policy/v1beta1rbac.authorization.k8s.io/v1rbac.authorization.k8s.io/v1beta1scheduling.k8s.io/v1scheduling.k8s.io/v1beta1storage.k8s.io/v1storage.k8s.io/v1beta1v1

节点相关

1、查看节点状态​​​​​​​

kubectl get node # 输出信息master01   Ready    etcd,master   76d   v1.19.16+k3s-

2、查看节点资源使用情况

kubectl top node # 输出信息NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   master01   3283m        41%    36941Mi         58%

3、查看节点详细信息

kubectl describe node <node-name> # 输出信息Name:               master01Roles:              etcd,masterLabels:             kubernetes.io/arch=amd64                    kubernetes.io/hostname=master01                    kubernetes.io/os=linux                    node-role.kubernetes.io/etcd=true                    node-role.kubernetes.io/master=trueAnnotations:        xxxxCreationTimestamp:  Tue, 21 May 2024 11:36:35 +0800Taints:             <none>Unschedulable:      falseLease:  HolderIdentity:  master01  AcquireTime:     <unset>  RenewTime:       Mon, 05 Aug 2024 14:21:42 +0800Conditions:  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message  ----                 ------  -----------------                 ------------------                ------                       -------  NetworkUnavailable   False   Thu, 25 Jul 2024 16:56:35 +0800   Thu, 25 Jul 2024 16:56:35 +0800   FlannelIsUp                  Flannel is running on this node  MemoryPressure       False   Mon, 05 Aug 2024 14:18:53 +0800   Tue, 21 May 2024 11:36:35 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available  DiskPressure         False   Mon, 05 Aug 2024 14:18:53 +0800   Thu, 30 May 2024 17:43:57 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure  PIDPressure          False   Mon, 05 Aug 2024 14:18:53 +0800   Tue, 21 May 2024 11:36:35 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available  Ready                True    Mon, 05 Aug 2024 14:18:53 +0800   Thu, 30 May 2024 17:43:57 +0800   KubeletReady                 kubelet is posting ready statusAddresses:  InternalIP:  172.17.xx.xx  Hostname:    master01Capacity:  cpu:                8  ephemeral-storage:  51474024Ki  hugepages-1Gi:      0  hugepages-2Mi:      0  memory:             64757920Ki  pods:               235Allocatable:  cpu:                8  ephemeral-storage:  52709400575  hugepages-1Gi:      0  hugepages-2Mi:      0  memory:             64655520Ki  pods:               235System Info:  Machine ID:                 xxxx  System UUID:                xxxx  Boot ID:                    0bf721f7-c072-4a24-9f7d-fc9f51007f65  Kernel Version:             3.10.0-1127.19.1.el7.x86_64  OS Image:                   CentOS Linux 7 (Core)  Operating System:           linux  Architecture:               amd64  Container Runtime Version:  containerd://1.4.11-k3s1  Kubelet Version:            v1.19.16+k3s-  Kube-Proxy Version:         v1.19.16+k3s-PodCIDR:                      10.42.0.0/24PodCIDRs:                     10.42.0.0/24Non-terminated Pods:          (110 in total)  Namespace                   Name                                               CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE  ---------                   ----                                               ------------  ----------  ---------------  -------------  ---  kube-system                 coredns-5d69dc75db-ddhb2                           100m (1%)     0 (0%)      70Mi (0%)        170Mi (0%)     10d  kube-system                 coredns-5d69dc75db-m5dcj                           100m (1%)     0 (0%)      70Mi (0%)        170Mi (0%)     10d  kube-system                 dns-autoscaler-5b66f57c-lccr9                      200m (2%)     0 (0%)      150Mi (0%)       0 (0%)         10d  kube-system                 fluentd-jj5hk                                      100m (1%)     1 (12%)     100Mi (0%)       3Gi (4%)       10d  kube-system                 kube-state-metrics-84c8c679b-9fxdp                 0 (0%)        0 (0%)      0 (0%)           0 (0%)         10d  kube-system                 metrics-server-7b4f8b595-gtbx9                     0 (0%)        0 (0%)      0 (0%)           0 (0%)         10d  kube-system                 nfs-client-provisioner-lanhuapp-d549cc59f-7l4r6    0 (0%)        0 (0%)      0 (0%)           0 (0%)         10d  kube-system                 nginx-ingress-controller-77ff74d4fc-8dlnk          0 (0%)        0 (0%)      0 (0%)           0 (0%)         10d  kube-system                 svclb-ingress-nginx-ssf2h                          0 (0%)        0 (0%)      0 (0%)           0 (0%)         10d  kube-system                 svclb-kube-state-metrics-bcdbm                     0 (0%)        0 (0%)      0 (0%)           0 (0%)         10dAllocated resources:  (Total limits may be over 100 percent, i.e., overcommitted.)  Resource           Requests       Limits  --------           --------       ------  cpu                3470m (43%)    79700m (996%)  memory             15718Mi (24%)  167972Mi (266%)  ephemeral-storage  0 (0%)         0 (0%)  hugepages-1Gi      0 (0%)         0 (0%)  hugepages-2Mi      0 (0%)         0 (0%)Events:              <none>

4、节点标签命令

# 新增节点标签kubectl label node <node-name> key=value # 删除节点标签kubectl label node <node-name> key- # 修改节点标签kubectl label node <node-name> key=value --overwrite # 查看节点标签kubectl get node <node-name> --show-labels111

5、节点污点命令

# 新增污点标记kubectl taint node <node-name> key=value:NoSchedulekubectl taint node <node-name> key=value:NoExecute # 删除污点标记:kubectl taint nodes <node-name> key-

命名空间相关

1、创建命名空间

kubectl create namespace <namespace>

2、查看命名空间

kubectl get namespace # 输出信息NAME                   STATUS   AGEdefault                Active   76dkube-system            Active   76d

3、删除命名空间

kubectl delete namespace <namespace>

4、切换命名空间

kubectl config set-context --current --namespace <namespace>

控制器相关

以 Deployment 为例

1、创建控制器

kubectl create deployment <deployment-name> --image=<image-name> --replicas=<num> 🔔 --image 选项:指定镜像🔔 --replicas 选项:指定副本数🔔 --env 选项:指定 ENV 环境变量

2、查看控制器

# 查看全部控制器列表kubectl get deployment # 查看控制器详细信息kubectl describe deployment <deployment-name> # 查看控制器资源清单kubectl get deployment <deployment-name> -oyaml

3、更新控制器

# 更新镜像kubectl set image deployment <deployment-name> <container-name>=<image-name> # 新增或修改 ENV 环境变量kubectl set env deployment <deployment-name> key=value # 删除 ENV 环境变量kubectl set env deployment <deployment-name> key- # 新增或修改资源限制kubectl set resources deployment <deployment-name> --requests=cpu=100m,memory=256Mi --limits=cpu=100m,memory=256Mi # 删除资源限制kubectl set resources deployment <deployment-name> --requests=cpu=0,memory=0 --limits=cpu=0,memory=0 ===================================================================================# 通过 patch 更新## 新增 command 参数kubectl patch deployment <deployment-name> --type json -p \'[{"op":"add", "path":"/spec/template/spec/containers/0/command", "value":["sh","-c","sleep 3000"]}]' ## 删除 command 参数kubectl patch deployment <deployment-name> --type json -p \'[{"op":"remove", "path":"/spec/template/spec/containers/0/command"}]' ## 替换 command 参数kubectl patch deployment <deployment-name> --type json -p \'[{"op":"replace", "path":"/spec/template/spec/containers/0/command", "value":["sh","-c","sleep 3600"]}]' 🔔 kubectl patch 可以使用 --dry-run 进行格式检查,追加 -oyaml 查看资源清单 ===================================================================================# 通过 edit 更新(类似 vi 文本操作)kubectl edit deployment <deployment-name>

、4、删除控制器​​​​​​​

# 删除全部控制器kubectl delete deployment --all # 删除指定名称控制器kubectl delete deployment <deployment-name>

5、副本伸缩

kubectl scale deployment <deployment-name> --replicas=<num>

6、滚动重启​​​​​​​

# 重启全部控制器kubectl rollout restart deployment # 重启指定名称控制器kubectl rollout restart deployment <deployment-name>

Pod 相关

1、创建临时 Pod

kubectl run --rm -it --image=busybox sh

2、查看 Pod

# 查看全部 Pod 列表kubectl get pod # 查看 Pod 详细信息kubectl describe pod <pod-name> # 查看 Pod 资源清单kubectl get pod <pod-name> -oyaml # 查看 Pod 日志## 方式一:通过 Pod 名称查看kubectl logs -f <pod-name> ## 方式二:通过 Pod 标签查看kubectl logs -f -l key=value 🔔 -c 选项:指定 Pod 内 Container 的名称,当 Pod 内有多个业务容器时需要指定🔔 -f 选项:查看实时日志🔔 -n 选项:指定命名空间🔔 -A 选项:所有命名空间🔔 -o 选项:指定输出格式,有 wide、yaml、json、name、custom-columns 等🔔 -v 选项:指定输出详细内容,6 表示输出 http 请求,8 表示输出 http 请求体、响应头、响应体内容

3、删除 Pod​​​​​​​

kubectl delete po <pod-name> 🔔 若执行后 Pod 长时间处于 Terminating 状态,添加参数 --force --grace-period 0 即可强制删除,但要谨慎使用!4、进入 Pod 容器
# 方式一:通过 Pod 名称进入kubectl exec -it <pod-name> bash # 方式二:通过 Deployment 名称进入kubectl exec -it deployment/<deployment-name> bash 🔔 -c 选项:指定 Pod 内 Container 的名称,当 Pod 内有多个业务容器时需要指定 # 不进入容器直接执行命令kubectl exec -it <pod-name> bash -c "<command>"kubectl exec <pod-name> -- sh -c "<command>"

Service 相关

1、创建 Service

# 方法一:基于已有 Deployment 对象创建kubectl expose deployment <deployment-name> --type=<Servcie 类型> --port=<port> --targetPort=<targetPort># 示例:kubectl expose deployment demo-deployment --type=ClusterIP --port=80 --targetPort=80 # 方法二:命令行创建kubectl create servcie <Servcie 类型> <service-name> --tcp=<port>:<targetPort># 示例:kubectl create servcie clusterip demo-servcie --tcp=80:80

2、查看 Service

# 查看全部 Service 列表kubectl get service # 查看 Service 详细信息kubectl describe service <service-name> # 查看 Service 资源清单kubectl get service <service-name> -oyaml

3、删除 Service

kubectl delete service <service-name>

资源对象缩写

部分资

# 查看所有资源对象kubectl api-resources # 资源对象缩写(部分)kubectl get all           # 查看所有 Workload(pod、svc、ds、deploy、rs、sts、job、cj)kubectl get cj            # 查看 CronJobkubectl get cm            # 查看 ConfigMapkubectl get cs            # 查看 ComponentStatuskubectl get deploy        # 查看 Deploymentkubectl get ds            # 查看 DaemonSetkubectl get ep            # 查看 Endpointkubectl get ev            # 查看 Event,即当前 Namespace 的事件kubectl get hpa           # 查看 HPAkubectl get ing           # 查看 Ingresskubectl get lease -A      # 查看集群健康状态信息kubectl get no            # 查看 Nodekubectl get ns            # 查看 Namespacekubectl get po            # 查看 Podkubectl get pv            # 查看 PersistentVolumekubectl get pvc           # 查看 PersistentVolumeClaimkubectl get rs            # 查看 ReplicaSetkubectl get sa            # 查看 ServiceAccountkubectl get sc            # 查看 StorageClasskubectl get sts           # 查看 StatefulSetkubectl get svc           # 查看 Service

kubectl 命令设置别名

cat >> /root/.bashrc <<EOFsource <(kubectl completion bash)# kubectl 别名alias k="kubectl"alias kc="kubectl get cm -o wide"alias kd="kubectl get deploy -o wide"alias ke="kubectl get ep"alias ki="kubectl get ing"alias kn="kubectl get no -o wide"alias kp="kubectl get po -o wide"alias wp="watch kubectl get po -o wide"alias kr="kubectl get rs"alias ks="kubectl get svc"alias krrd="kubectl rollout restart deploy"alias krsd="kubectl rollout status deploy"alias krrs="kubectl rollout restart sts"alias krss="kubectl rollout status sts"complete -F __start_kubectl kEOF source /root/.bashrc

<think>嗯,用户想了解Kubernetesk8s)的常用命令,我需要整理一个清晰的结构来帮助他。首先,我应该回忆一下k8s的基础命令,比如集群管理、资源查看这些部分。然后考虑用户可能的场景,比如他可能是一个刚入门的管理员或者开发者,需要部署应用、调试问题,所以命令需要覆盖这些方面。 接下来,我需要分门别类地组织这些命令。通常,k8s的命令可以分为集群管理、资源操作、调试与日志、配置管理、扩展与自动伸缩、网络相关、存储管理这几个大类。每个类别下再列出常用命令和示例。 要注意用户提到的格式要求,行内数学表达式用$...$,但这里可能不太涉及数学公式,不过要确保所有的代码或命令行参数正确,比如用反引号包裹。同时,中文回答,结构清晰,分步骤说明。 可能还需要提醒用户注意权限问题,比如有些命令需要特定权限,或者不同命名空间的影响。此外,补充一些常用技巧,比如别名设置,这样能提升用户的使用效率。 另外,用户可能不仅需要命令列表,还需要一些解释,比如每个命令的作用和参数的意义。例如,kubectl get pods 是查看Pod,而-n指定命名空间。这样用户更容易理解何时使用这些命令。 最后,检查是否有遗漏的常用命令,比如滚动更新、回滚、端口转发这些操作,都是日常管理中会用到的。确保覆盖全面,同时不过于冗长,保持简洁明了。</think>以下为Kubernetesk8s常用命令的整理,按照功能分类说明: --- ### 一、集群管理 1. **查看集群信息** ```bash kubectl cluster-info ``` 2. **查看节点状态** ```bash kubectl get nodes ``` 3. **查看集群版本** ```bash kubectl version ``` --- ### 二、资源操作 1. **查看资源** ```bash kubectl get <资源类型> # 例如:kubectl get pods kubectl get pods -n <命名空间> # 指定命名空间 kubectl get deployments --all-namespaces # 查看所有命名空间的Deployment ``` 2. **描述资源详情** ```bash kubectl describe <资源类型>/<名称> # 例如:kubectl describe pod/nginx ``` 3. **创建/更新资源** ```bash kubectl apply -f <yaml文件> # 通过YAML文件创建或更新资源 ``` 4. **删除资源** ```bash kubectl delete <资源类型>/<名称> # 例如:kubectl delete deployment/nginx kubectl delete -f <yaml文件> # 通过YAML文件删除资源 ``` --- ### 三、调试与日志 1. **查看Pod日志** ```bash kubectl logs <pod名称> -n <命名空间> kubectl logs -f <pod名称> # 实时跟踪日志 ``` 2. **进入Pod执行命令** ```bash kubectl exec -it <pod名称> -- /bin/sh # 进入Pod的Shell环境 ``` 3. **端口转发** ```bash kubectl port-forward <pod名称> <本地端口>:<Pod端口> # 例如:kubectl port-forward nginx 8080:80 ``` --- ### 四、配置管理 1. **查看当前配置** ```bash kubectl config view ``` 2. **切换上下文(集群/用户)** ```bash kubectl config use-context <上下文名称> ``` --- ### 五、扩展与自动伸缩 1. **手动扩展Deployment副本数** ```bash kubectl scale deployment/<名称> --replicas=3 ``` 2. **自动扩缩容(HPA)** ```bash kubectl autoscale deployment/<名称> --min=2 --max=5 --cpu-percent=80 ``` --- ### 六、网络相关 1. **查看Service** ```bash kubectl get services ``` 2. **暴露Service** ```bash kubectl expose deployment/<名称> --type=NodePort --port=80 ``` --- ### 七、存储管理 1. **查看PersistentVolume(PV)** ```bash kubectl get pv ``` 2. **查看PersistentVolumeClaim(PVC)** ```bash kubectl get pvc ``` --- ### 常用技巧 1. **别名简化命令** ```bash alias k="kubectl" # 后续可用 k get pods 代替 kubectl get pods ``` 2. **查看资源简写** ```bash kubectl api-resources # 列出所有资源的缩写(如po=pods, svc=services) ``` 3. **格式化输出** ```bash kubectl get pods -o wide # 显示详细信息 kubectl get pods -o json # JSON格式输出 kubectl get pods -o yaml # YAML格式输出 ``` --- ### 注意事项 1. **命名空间**:默认操作`default`命名空间,使用`-n`指定其他命名空间 2. **权限问题**:部分命令需要`ClusterRole`权限 3. **上下文切换**:多集群环境下需注意当前操作的集群 建议通过`kubectl --help`查看子命令帮助文档,例如`kubectl get --help`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux运维老纪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值