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
相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS4 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun4 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
赵文宇(温玉)4 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang4 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren4 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
忆~遂愿4 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
Thneonl4 天前
你的 Pod 为什么 Pending:调度器两阶段
后端·kubernetes
不吃香菜kkk、4 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ChaITSimpleLove4 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21