黔东南苗族侗族自治州网站建设_网站建设公司_GitHub_seo优化
2025/12/18 20:39:51 网站建设 项目流程

Kubernetes 实操命令大全

基础命令

查看集群信息

# 查看集群信息kubectl cluster-info# 查看集群详细信息kubectl cluster-info dump# 查看 Kubernetes 版本kubectl version# 查看客户端和服务器版本kubectl version --short# 查看 API 资源列表kubectl api-resources# 查看 API 版本kubectl api-versions

查看配置

# 查看当前上下文kubectl config current-context# 查看所有上下文kubectl config get-contexts# 切换上下文kubectl config use-context<context-name># 查看配置kubectl config view# 查看特定配置kubectl config view --minify

Pod 管理

创建和删除 Pod

# 从 YAML 文件创建 Podkubectl create -f pod.yaml# 从 YAML 文件创建或更新 Podkubectl apply -f pod.yaml# 删除 Podkubectl delete pod<pod-name># 删除指定命名空间的 Podkubectl delete pod<pod-name>-n<namespace># 强制删除 Podkubectl delete pod<pod-name>--force --grace-period=0

查看 Pod

# 查看所有 Podkubectl get pods# 查看所有命名空间的 Podkubectl get pods --all-namespaces kubectl get pods -A# 查看指定命名空间的 Podkubectl get pods -n<namespace># 查看 Pod 详细信息kubectl get pods<pod-name>-o wide# 查看 Pod 完整信息(YAML)kubectl get pod<pod-name>-o yaml# 查看 Pod 描述信息kubectl describe pod<pod-name># 查看 Pod 标签kubectl get pods --show-labels

Pod 状态管理

# 查看 Pod 状态kubectl get pods -w# 查看 Pod 事件kubectl get events --sort-by=.metadata.creationTimestamp# 查看 Pod 日志kubectl logs<pod-name># 查看 Pod 中特定容器的日志kubectl logs<pod-name>-c<container-name># 实时查看日志kubectl logs -f<pod-name># 查看最近 100 行日志kubectl logs --tail=100<pod-name># 查看指定时间范围的日志kubectl logs --since=1h<pod-name>

Deployment 管理

创建和更新 Deployment

# 创建 Deploymentkubectl create deployment<deployment-name>--image=<image-name># 从 YAML 文件创建 Deploymentkubectl create -f deployment.yaml# 应用 Deployment(创建或更新)kubectl apply -f deployment.yaml# 更新 Deployment 镜像kubectlsetimage deployment/<deployment-name><container-name>=<new-image># 更新 Deployment 环境变量kubectlsetenvdeployment/<deployment-name>KEY=VALUE

查看 Deployment

# 查看所有 Deploymentkubectl get deployments kubectl get deploy# 查看 Deployment 详细信息kubectl describe deployment<deployment-name># 查看 Deployment 的 ReplicaSetkubectl get rs# 查看 Deployment 历史版本kubectl rollouthistorydeployment/<deployment-name>

Deployment 扩缩容

# 扩展 Deploymentkubectl scale deployment<deployment-name>--replicas=3# 自动扩缩容kubectl autoscale deployment<deployment-name>--min=2--max=10--cpu-percent=80

滚动更新和回滚

# 查看滚动更新状态kubectl rollout status deployment/<deployment-name># 暂停滚动更新kubectl rollout pause deployment/<deployment-name># 恢复滚动更新kubectl rollout resume deployment/<deployment-name># 回滚到上一个版本kubectl rollout undo deployment/<deployment-name># 回滚到指定版本kubectl rollout undo deployment/<deployment-name>--to-revision=2# 查看回滚历史kubectl rollouthistorydeployment/<deployment-name>

删除 Deployment

# 删除 Deploymentkubectl delete deployment<deployment-name># 删除 Deployment 但保留 Podkubectl delete deployment<deployment-name>--cascade=orphan

Service 管理

创建 Service

# 创建 Servicekubectl createserviceclusterip<service-name>--tcp=80:8080# 从 YAML 文件创建 Servicekubectl create -f service.yaml# 应用 Servicekubectl apply -f service.yaml# 创建 NodePort Servicekubectl expose deployment<deployment-name>--type=NodePort --port=80# 创建 LoadBalancer Servicekubectl expose deployment<deployment-name>--type=LoadBalancer --port=80

查看 Service

# 查看所有 Servicekubectl get services kubectl get svc# 查看 Service 详细信息kubectl describeservice<service-name># 查看 Service 端点kubectl get endpoints<service-name>

删除 Service

# 删除 Servicekubectl deleteservice<service-name>

ConfigMap 和 Secret

ConfigMap 操作

# 从字面量创建 ConfigMapkubectl create configmap<configmap-name>--from-literal=key1=value1 --from-literal=key2=value2# 从文件创建 ConfigMapkubectl create configmap<configmap-name>--from-file=path/to/file# 从目录创建 ConfigMapkubectl create configmap<configmap-name>--from-file=path/to/dir# 查看 ConfigMapkubectl get configmap kubectl get cm# 查看 ConfigMap 内容kubectl describe configmap<configmap-name># 查看 ConfigMap 的 YAMLkubectl get configmap<configmap-name>-o yaml# 删除 ConfigMapkubectl delete configmap<configmap-name>

Secret 操作

# 从字面量创建 Secretkubectl create secret generic<secret-name>--from-literal=username=admin --from-literal=password=secret# 从文件创建 Secretkubectl create secret generic<secret-name>--from-file=username.txt --from-file=password.txt# 创建 TLS Secretkubectl create secret tls<secret-name>--cert=path/to/cert --key=path/to/key# 查看 Secretkubectl get secrets# 查看 Secret 详细信息kubectl describe secret<secret-name># 查看 Secret 内容(base64 编码)kubectl get secret<secret-name>-o yaml# 解码 Secretkubectl get secret<secret-name>-ojsonpath='{.data.password}'|base64 -d# 删除 Secretkubectl delete secret<secret-name>

Namespace 管理

创建和删除 Namespace

# 创建 Namespacekubectl create namespace<namespace-name># 从 YAML 文件创建 Namespacekubectl create -f namespace.yaml# 删除 Namespacekubectl delete namespace<namespace-name># 强制删除 Namespace(清理所有资源)kubectl delete namespace<namespace-name>--force --grace-period=0

查看 Namespace

# 查看所有 Namespacekubectl get namespaces kubectl get ns# 查看 Namespace 详细信息kubectl describe namespace<namespace-name># 查看指定 Namespace 的所有资源kubectl get all -n<namespace-name>

切换 Namespace

# 设置默认 Namespacekubectl config set-context --current --namespace=<namespace-name># 查看当前 Namespacekubectl config view --minify|grepnamespace

节点管理

查看节点

# 查看所有节点kubectl get nodes# 查看节点详细信息kubectl describe node<node-name># 查看节点资源使用情况kubectltopnodes# 查看节点标签kubectl get nodes --show-labels

节点操作

# 标记节点为不可调度kubectl cordon<node-name># 取消节点不可调度标记kubectl uncordon<node-name># 排空节点(驱逐 Pod)kubectl drain<node-name># 排空节点但忽略 DaemonSetkubectl drain<node-name>--ignore-daemonsets# 删除节点kubectl delete node<node-name>

日志和调试

查看日志

# 查看 Pod 日志kubectl logs<pod-name># 查看多个 Pod 的日志kubectl logs -lapp=<app-label># 查看前一个容器的日志(容器重启后)kubectl logs<pod-name>--previous# 查看指定容器的日志kubectl logs<pod-name>-c<container-name># 实时跟踪日志kubectl logs -f<pod-name># 查看最近 N 行日志kubectl logs --tail=100<pod-name># 查看指定时间范围的日志kubectl logs --since=10m<pod-name>kubectl logs --since=2023-01-01T00:00:00Z<pod-name>

进入容器调试

# 进入 Pod 的容器执行命令kubectlexec<pod-name>--<command># 进入 Pod 的容器交互式 shellkubectlexec-it<pod-name>-- /bin/bash kubectlexec-it<pod-name>-- /bin/sh# 在指定容器中执行命令kubectlexec<pod-name>-c<container-name>--<command># 在容器中执行命令并获取输出kubectlexec<pod-name>--envkubectlexec<pod-name>--psaux

调试工具

# 查看 Pod 事件kubectl get events --sort-by=.metadata.creationTimestamp# 查看特定资源的事件kubectl describe pod<pod-name># 查看集群事件kubectl get events -A --sort-by=.metadata.creationTimestamp# 查看资源使用情况kubectltoppod kubectltopnode# 查看特定 Pod 的资源使用kubectltoppod<pod-name>

资源查看

通用查看命令

# 查看所有资源kubectl get all# 查看所有命名空间的所有资源kubectl get all -A# 查看特定类型的资源kubectl get<resource-type># 查看资源的详细信息kubectl get<resource-type><resource-name>-o yaml kubectl get<resource-type><resource-name>-o json# 查看资源的描述信息kubectl describe<resource-type><resource-name># 查看资源的宽格式输出kubectl get<resource-type>-o wide

常用资源类型

# Podskubectl get pods# Deploymentskubectl get deployments kubectl get deploy# Serviceskubectl get services kubectl get svc# ReplicaSetskubectl get replicasets kubectl get rs# StatefulSetskubectl get statefulsets kubectl get sts# DaemonSetskubectl get daemonsets kubectl get ds# Jobskubectl getjobs# CronJobskubectl get cronjobs# ConfigMapskubectl get configmaps kubectl get cm# Secretskubectl get secrets# PersistentVolumeskubectl getpv# PersistentVolumeClaimskubectl get pvc# Ingresskubectl get ingress kubectl get ing

扩缩容

手动扩缩容

# 扩展 Deploymentkubectl scale deployment<deployment-name>--replicas=5# 扩展 ReplicaSetkubectl scale rs<replicaset-name>--replicas=3# 扩展 StatefulSetkubectl scale statefulset<statefulset-name>--replicas=5# 扩展当前 YAML 文件中定义的资源kubectl scale --replicas=3-f deployment.yaml

自动扩缩容(HPA)

# 创建 HorizontalPodAutoscalerkubectl autoscale deployment<deployment-name>--min=2--max=10--cpu-percent=80# 查看 HPAkubectl get hpa# 查看 HPA 详细信息kubectl describe hpa<hpa-name># 删除 HPAkubectl delete hpa<hpa-name>

端口转发

端口转发到 Pod

# 转发 Pod 端口到本地kubectl port-forward<pod-name>8080:80# 转发到指定命名空间的 Podkubectl port-forward<pod-name>8080:80 -n<namespace># 转发到指定容器的端口kubectl port-forward<pod-name>8080:80 -c<container-name># 在后台运行端口转发kubectl port-forward<pod-name>8080:80&

端口转发到 Service

# 转发 Service 端口到本地kubectl port-forward service/<service-name>8080:80# 转发到指定命名空间的 Servicekubectl port-forward service/<service-name>8080:80 -n<namespace>

端口转发到 Deployment

# 转发 Deployment 端口到本地kubectl port-forward deployment/<deployment-name>8080:80

执行命令

在容器中执行命令

# 执行单条命令kubectlexec<pod-name>--<command># 交互式执行命令kubectlexec-it<pod-name>-- /bin/bash# 在指定容器中执行命令kubectlexec<pod-name>-c<container-name>--<command># 执行命令并传递环境变量kubectlexec<pod-name>--env# 执行多个命令kubectlexec<pod-name>--sh-c"command1 && command2"

临时容器调试

# 使用 kubectl debug 创建临时调试容器kubectl debug<pod-name>-it --image=busybox --target=<container-name># 创建 Pod 的副本用于调试kubectl debug<pod-name>-it --copy-to=my-debug-pod --share-processes

标签和选择器

标签操作

# 给资源添加标签kubectl label pod<pod-name>app=myapp# 给资源添加多个标签kubectl label pod<pod-name>app=myappenv=production# 覆盖现有标签kubectl label pod<pod-name>app=newapp --overwrite# 删除标签kubectl label pod<pod-name>app-# 查看带标签的资源kubectl get pods --show-labels# 使用标签选择器查看资源kubectl get pods -lapp=myapp kubectl get pods -l'app in (myapp,webapp)'kubectl get pods -l'app=myapp,env=production'

选择器查询

# 使用等号选择器kubectl get pods -lapp=myapp# 使用不等号选择器kubectl get pods -l app!=myapp# 使用 in 选择器kubectl get pods -l'app in (myapp,webapp)'# 使用 notin 选择器kubectl get pods -l'app notin (myapp,webapp)'# 使用 exists 选择器kubectl get pods -l'app'# 使用 does not exist 选择器kubectl get pods -l'!app'

滚动更新和回滚

滚动更新

# 查看滚动更新状态kubectl rollout status deployment/<deployment-name># 查看滚动更新历史kubectl rollouthistorydeployment/<deployment-name># 查看特定版本的详细信息kubectl rollouthistorydeployment/<deployment-name>--revision=2# 暂停滚动更新kubectl rollout pause deployment/<deployment-name># 恢复滚动更新kubectl rollout resume deployment/<deployment-name># 重启 Deployment(触发滚动更新)kubectl rollout restart deployment/<deployment-name>

回滚

# 回滚到上一个版本kubectl rollout undo deployment/<deployment-name># 回滚到指定版本kubectl rollout undo deployment/<deployment-name>--to-revision=2# 回滚 StatefulSetkubectl rollout undo statefulset/<statefulset-name># 回滚 DaemonSetkubectl rollout undo daemonset/<daemonset-name>

资源清理

删除资源

# 删除 Podkubectl delete pod<pod-name># 删除 Deploymentkubectl delete deployment<deployment-name># 删除 Servicekubectl deleteservice<service-name># 删除多个资源kubectl delete pod<pod1><pod2><pod3># 使用标签选择器删除资源kubectl delete pods -lapp=myapp# 删除命名空间中的所有资源kubectl delete all --all -n<namespace-name># 从文件删除资源kubectl delete -f deployment.yaml# 强制删除资源kubectl delete pod<pod-name>--force --grace-period=0

清理命名空间

# 删除命名空间(会删除其中的所有资源)kubectl delete namespace<namespace-name># 强制删除命名空间kubectl delete namespace<namespace-name>--force --grace-period=0

YAML 文件操作

从资源生成 YAML

# 获取资源的 YAMLkubectl get pod<pod-name>-o yaml# 获取资源的 YAML(不包含运行时信息)kubectl get pod<pod-name>-o yaml --export# 获取资源的 JSONkubectl get pod<pod-name>-o json# 获取资源的自定义格式kubectl get pod<pod-name>-ojsonpath='{.metadata.name}'

应用 YAML 文件

# 创建资源kubectl create -f deployment.yaml# 应用资源(创建或更新)kubectl apply -f deployment.yaml# 应用目录中的所有 YAML 文件kubectl apply -f ./manifests/# 应用多个文件kubectl apply -f file1.yaml -f file2.yaml# 应用 URL 中的 YAMLkubectl apply -f https://example.com/manifest.yaml# 应用时验证但不实际创建kubectl apply -f deployment.yaml --dry-run=client# 应用时显示差异kubectldiff-f deployment.yaml

编辑资源

# 编辑资源(使用默认编辑器)kubectl edit pod<pod-name># 编辑 Deploymentkubectl edit deployment<deployment-name># 使用特定编辑器KUBE_EDITOR="nano"kubectl edit pod<pod-name>

事件和监控

查看事件

# 查看所有事件kubectl get events# 查看所有命名空间的事件kubectl get events -A# 按时间排序查看事件kubectl get events --sort-by=.metadata.creationTimestamp# 查看特定资源的事件kubectl describe pod<pod-name># 查看最近的事件kubectl get events --field-selector involvedObject.kind=Pod

资源监控

# 查看 Pod 资源使用情况kubectltoppod# 查看节点资源使用情况kubectltopnode# 查看特定 Pod 的资源使用kubectltoppod<pod-name># 查看特定命名空间的 Pod 资源使用kubectltoppod -n<namespace># 持续监控资源使用watchkubectltoppod

存储管理

PersistentVolume 和 PersistentVolumeClaim

# 查看 PersistentVolumekubectl getpv# 查看 PersistentVolumeClaimkubectl get pvc# 查看 PV 详细信息kubectl describepv<pv-name># 查看 PVC 详细信息kubectl describe pvc<pvc-name># 删除 PVCkubectl delete pvc<pvc-name># 删除 PVkubectl deletepv<pv-name>

StorageClass

# 查看 StorageClasskubectl get storageclass kubectl get sc# 查看 StorageClass 详细信息kubectl describe storageclass<storageclass-name>

网络管理

Ingress

# 查看 Ingresskubectl get ingress kubectl get ing# 查看 Ingress 详细信息kubectl describe ingress<ingress-name># 创建 Ingresskubectl create ingress<ingress-name>--rule="host/path=service:port"# 删除 Ingresskubectl delete ingress<ingress-name>

网络策略

# 查看 NetworkPolicykubectl get networkpolicies kubectl get netpol# 查看 NetworkPolicy 详细信息kubectl describe networkpolicy<networkpolicy-name>

权限管理

ServiceAccount

# 查看 ServiceAccountkubectl get serviceaccounts kubectl get sa# 创建 ServiceAccountkubectl create serviceaccount<serviceaccount-name># 查看 ServiceAccount 详细信息kubectl describe serviceaccount<serviceaccount-name># 删除 ServiceAccountkubectl delete serviceaccount<serviceaccount-name>

Role 和 RoleBinding

# 查看 Rolekubectl get roles# 查看 RoleBindingkubectl get rolebindings# 查看 ClusterRolekubectl get clusterroles# 查看 ClusterRoleBindingkubectl get clusterrolebindings

实用技巧

批量操作

# 批量删除 Podkubectl delete pods --all# 批量删除指定标签的 Podkubectl delete pods -lapp=myapp# 批量重启 Deploymentkubectl rollout restart deployment/<deployment-name>

输出格式

# YAML 格式kubectl get pod<pod-name>-o yaml# JSON 格式kubectl get pod<pod-name>-o json# 自定义列kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase# JSONPathkubectl get pods -ojsonpath='{.items[*].metadata.name}'# Go 模板kubectl get pods -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'

别名设置

# 设置常用别名(添加到 ~/.bashrc 或 ~/.zshrc)aliask='kubectl'aliaskgp='kubectl get pods'aliaskgd='kubectl get deployments'aliaskgs='kubectl get services'aliaskdp='kubectl describe pod'aliaskdd='kubectl describe deployment'aliaskds='kubectl describe service'aliaskl='kubectl logs'aliaske='kubectl exec -it'

上下文切换

# 查看所有上下文kubectl config get-contexts# 切换上下文kubectl config use-context<context-name># 查看当前上下文kubectl config current-context# 重命名上下文kubectl config rename-context<old-name><new-name>

故障排查

常见问题排查

# 查看 Pod 无法启动的原因kubectl describe pod<pod-name># 查看 Pod 事件kubectl get events --field-selector involvedObject.name=<pod-name># 查看容器退出码kubectl get pod<pod-name>-ojsonpath='{.status.containerStatuses[0].lastState.terminated.exitCode}'# 查看镜像拉取失败的原因kubectl describe pod<pod-name>|grep-A5"Events"# 查看节点资源kubectl describe node<node-name># 查看节点上的 Podkubectl get pods --field-selector spec.nodeName=<node-name>

调试技巧

# 查看 Pod 的完整状态kubectl get pod<pod-name>-o yaml# 查看 Pod 的日志和事件kubectl logs<pod-name>&&kubectl describe pod<pod-name># 进入 Pod 检查网络连接kubectlexec-it<pod-name>--ping<service-name># 检查 DNS 解析kubectlexec-it<pod-name>--nslookup<service-name># 检查环境变量kubectlexec<pod-name>--env# 检查挂载的卷kubectlexec<pod-name>--ls-la /path/to/mount

总结

本文档涵盖了 Kubernetes 日常操作中最常用的命令,包括:

  • 基础操作:集群信息查看、配置管理
  • 资源管理:Pod、Deployment、Service 等核心资源
  • 存储和网络:ConfigMap、Secret、PV/PVC、Ingress
  • 监控和调试:日志查看、事件监控、故障排查
  • 高级功能:滚动更新、自动扩缩容、端口转发

掌握这些命令可以大大提高 Kubernetes 集群管理的效率。建议根据实际使用场景,将常用命令设置为别名,以便快速执行。


提示

  • 使用kubectl --help查看任何命令的详细帮助
  • 使用kubectl explain <resource>查看资源的字段说明
  • 使用kubectl api-resources查看所有可用的 API 资源类型

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询