一、先看懂 kubectl 命令格式

kubectl 的基础格式可以概括为:

kubectl [command] [type] [NAME] [flags]
kubectl get deployment nginx --show-labels

这里最关键的是三类信息:

  • command:你想做什么,比如 createapplydeleteeditget
  • type:你要操作什么资源,比如 poddeploymentservice
  • NAME:具体资源名,比如 nginx

如果只记一条规律,那就是:

  • 创建资源常用 createapply
  • 删除资源常用 delete
  • 修改资源常用 editreplaceapply
  • 查询资源常用 get

二、为什么 kubectl 会报 localhost:8080 refused

很多新手一上来就会碰到这个报错:

kubectl get po
The connection to the server localhost:8080 was refused - did you specify the right host or port?

这个问题通常不是 Kubernetes 集群坏了,而是当前机器没有可用的 kubeconfig 文件。也就是说,kubectl 不知道应该连接哪一个 API Server。

最常见的处理方式,是把控制节点上的 admin.conf 拿到当前机器来使用。

1. 直接用 --kubeconfig 指定

kubectl --kubeconfig ~/admin.conf get po

这是最直接、最安全的方式,适合临时执行命令。

2. 通过环境变量指定

export KUBECONFIG=/root/admin.conf
kubectl get po

这种方式适合当前 Shell 会话持续使用。

3. 拷贝到默认位置

cp admin.conf ~/.kube/config
kubectl get po

这种方式最省事,但前提是你明确知道这台机器要长期使用这一份集群配置。

实际使用时,可以把优先级理解成:

--kubeconfig > KUBECONFIG 环境变量 > ~/.kube/config

三、kubectl 的基础增删改查怎么做

kubectl 最重要的第一步,不是背大量命令,而是先掌握最常见的基础操作。

1. 创建资源

创建 Deployment

kubectl create deployment nginx \
  --image=registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1

只生成 YAML,不真正创建资源:

kubectl create deployment nginx \
  --image=registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1 \
  --dry-run=client -o yaml > nginx-deployment.yaml

创建一个简单的 Job

kubectl create job hello \
  --image=registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1 \
  -- echo dotba

通过已有 YAML 创建资源:

kubectl create -f xxx.yaml

2. 删除资源

删除指定 Deployment

kubectl delete deploy nginx

通过 YAML 删除资源:

kubectl delete -f xxx.yaml

3. 修改资源

在线编辑资源:

kubectl edit deploy nginx

用文件替换资源:

kubectl replace -f xxx.yaml

声明式创建或更新:

kubectl apply -f xxx.yaml

4. 查询资源

查看当前命名空间下的 Deployment

kubectl get deploy

查看指定 Job,并按名称排序:

kubectl get job --sort-by=.metadata.name

查看指定 Deployment

kubectl get deploy nginx

查看 kube-system 命名空间中的资源:

kubectl get deploy -n kube-system

查看资源的 YAML:

kubectl get deploy nginx -o yaml

查看 Pod 详细信息和所在节点:

kubectl get po -o wide

四、初学 kubectl 时最实用的三个建议

如果你刚开始接触 Kubernetes,建议优先建立下面这套习惯:

  • 先确认 kubeconfig 正常,再执行资源命令
  • 能先 --dry-run -o yaml 的场景,尽量先生成 YAML 再落盘
  • apply 管理长期资源,用 get -o yamledit 辅助排查

这样做的好处是,你不会只停留在“能敲命令”,而是会更快进入 Kubernetes 的声明式管理思路。