Kubectl:Kubernetes 的强大命令行工具

前言

在 Kubernetes 这一强大的容器编排平台中,kubectl 无疑是一把至关重要的利器。它就像是一位全能的指挥官,让用户能够与 Kubernetes 集群进行高效而直接的交互。无论是管理容器化应用的部署、监控资源的使用情况,还是处理故障排查等任务,kubectl 都发挥着不可或缺的作用。

Kubernetes 以其高度的可扩展性和灵活性,成为了现代云原生应用开发和部署的首选平台。而 kubectl 作为与 Kubernetes 集群进行交互的主要方式,为开发者和运维人员提供了丰富的功能和便捷的操作。通过一系列简洁而强大的命令,用户可以轻松地对 Kubernetes 集群中的各种资源进行管理和控制。

在接下来的文章中,我们将深入探讨 kubectl 的常用命令,带你领略它的强大之处,帮助你更加熟练地运用这个工具来管理你的 Kubernetes 集群。

基本语法

sh 复制代码
kubectl [command] [TYPE] [NAME] [flags]
# 查看集群信息
kubectl cluster-info  

资源的缩写

  • Deployment:deploy
  • StatefulSet:sts
  • DaemonSet:ds
  • ReplicaSet:rs
  • Pod:po
  • Service:svc
  • ConfigMap:cm
  • Secret:sec
  • PersistentVolumeClaim:pvc
  • PersistentVolume:pv
  • Node:no

get

显示一种或多种资源

sh 复制代码
$ kubectl get [--kubeconfig=...] [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]
sh 复制代码
# 列出所有不同的资源对象,默认default空间
kubectl get all
# 带上k8s认证信息,一般远程调用使用
kubectl --kubeconfig=/xxx/k8s.conf get all
# 查看test空间下的所有资源 
kubectl get all -n test
# 列出所有节点
kubectl get nodes
# 列出所有节点及详情
kubectl get nodes -o wide 
# 实时查看
kubectl get pods -o wide -w
# 列出所有节点详情及标签信息
kubectl get nodes -o wide --show-labels
# 列出所有命名空间下运行的Pod信息
kubectl get pods --all-namespaces
kubectl get pods -A
# 列出所有运行的Pod信息及详情
kubectl get pods -n test -o wide
# 列出所有的命令空间
kubectl get namespace
# 列出所有deployment和service信息,注意不要有空格
kubectl get deployments,services

describe

sh 复制代码
# 语法
kubectl describe TYPE NAME_PREFIX
# 查看名为test-nginx的详细信息
kubectl describe deployment test-nginx -n test
# 查看名为test-nginx的svc的详细信息
kubectl describe svc test-nginx -n test

create

sh 复制代码
# 从文件或标准输入创建资源,接受JSON和YAML格式。
kubectl create -f FILENAME
# 根据aaa.text创建一个名为my-config的configmap
kubectl create configmap my-config --from-file=/root/aaa.text
# 创建一个名为test的命名空间,可缩写为ns
kubectl create namespace test
# 在test命名空间下,创建一个名为test-nginx的deployment资源
kubectl create deployment test-nginx --image=daocloud.io/library/nginx:1.27.1  -n test 

delete

通过配置文件名、stdin、资源名称或label选择器来删除资源。

sh 复制代码
# 语法
$ delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])
# 使用nginx-test.yml中指定的资源类型和名称删除pod
kubectl delete -f ./nginx-test.yml
# 删除一个pod
kubectl delete pod test-nginx-cc44fcc54-hhfgv -n test
# 删除所有的pod
kubectl delete pods --all
# 删除命名空间
kubectl delete namespace test-namespace

run

sh 复制代码
# 在test命名空间下创建nginx,执行端口8080,副本数为2
kubectl run nginx --image=daocloud.io/library/nginx:1.27.1 --port=8080 --replicas=2 --env="POD_NAMESPACE=test"

scale

sh 复制代码
# 语法
scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
# 扩容test-nginx为3份
kubectl scale deployment test-nginx --replicas=3 -n test
相关推荐
阿里云云原生28 分钟前
Higress v2.2.3 发布:正式入驻 CNCF Sandbox,AI Gateway 与 Ingress 迁移能力双向加固
云原生
lichenyang4536 小时前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4536 小时前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4536 小时前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
阿里云云原生1 天前
香港站【企业 AI Agent 工程化实战专场】来啦,邀您7月9日见!
云原生·agent
阿里云云原生1 天前
研发域与运维域的“数字握手”:通过 Agentic Skills 实现 DevOps 全链路自动化
云原生
运维开发故事3 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
阿里云云原生5 天前
AI 开发新常态:当 Cursor、Claude、Codex 并行,如何统一管理散落的 Skill 资产?
云原生·ai编程
探索云原生5 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes