一、先看懂 kubectl 命令格式¶
kubectl 的基础格式可以概括为:
kubectl [command] [type] [NAME] [flags]
kubectl get deployment nginx --show-labels
这里最关键的是三类信息:
command:你想做什么,比如create、apply、delete、edit、gettype:你要操作什么资源,比如pod、deployment、serviceNAME:具体资源名,比如nginx
如果只记一条规律,那就是:
- 创建资源常用
create、apply - 删除资源常用
delete - 修改资源常用
edit、replace、apply - 查询资源常用
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 yaml和edit辅助排查
这样做的好处是,你不会只停留在“能敲命令”,而是会更快进入 Kubernetes 的声明式管理思路。