Skip to content

关于 kubectl 的详细介绍,涵盖核心功能、常用命令及实用技巧:


1. kubectl 是什么?

定义:Kubernetes 命令行工具,用于与 Kubernetes 集群交互(相当于 Kubernetes 的"遥控器")。 • 核心功能: • 部署和管理应用 • 查看和调试集群状态 • 操作 Kubernetes 资源(Pod/Service/Deployment 等)


2. 核心命令分类

(1) 基础资源操作

命令作用示例
get查看资源kubectl get pods -n dev
create创建资源kubectl create deployment nginx --image=nginx
apply声明式配置kubectl apply -f deploy.yaml
delete删除资源kubectl delete pod mypod

(2) 调试与日志

命令作用示例
logs查看容器日志kubectl logs -f mypod
describe查看资源详情kubectl describe node node1
exec进入容器kubectl exec -it mypod -- bash
port-forward端口转发kubectl port-forward svc/myapp 8080:80

(3) 集群管理

命令作用示例
top查看资源使用kubectl top nodes
taint标记节点kubectl taint nodes node1 key=value:NoSchedule
cordon隔离节点kubectl cordon node1

3. 实用技巧

(1) 高效查询

bash
# 查看Pod的标签和所在节点
kubectl get pods -o wide --show-labels

# 自定义输出格式(JSONPath)
kubectl get pods -o=jsonpath='{.items[*].metadata.name}'

# 监听资源变化(类似tail -f)
kubectl get pods -w

(2) 多集群管理

bash
# 查看所有上下文
kubectl config get-contexts

# 切换集群
kubectl config use-context dev-cluster

# 合并多个kubeconfig
KUBECONFIG=~/.kube/config-dev:~/.kube/config-prod kubectl config view --flatten > merged-config

(3) 批量操作

bash
# 删除所有Evicted状态的Pod
kubectl get pods -A | grep Evicted | awk '{print $2}' | xargs kubectl delete pod

# 批量扩容Deployment
kubectl get deployments -n dev -o name | xargs -I {} kubectl scale --replicas=3 {}

4. 配置文件示例

deploy.yaml(声明式配置):

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.25
          ports:
            - containerPort: 80

应用配置:

bash
kubectl apply -f deploy.yaml

5. 常见问题排查流程

  1. 检查Pod状态
    bash
    kubectl get pods -o wide
    kubectl describe pod problem-pod
  2. 查看日志
    bash
    kubectl logs -f problem-pod -c container-name
  3. 检查事件
    bash
    kubectl get events --sort-by=.metadata.creationTimestamp
  4. 进入容器调试
    bash
    kubectl exec -it problem-pod -- sh

6. 扩展工具

工具作用
kubectx快速切换上下文
kubens切换命名空间
k9s终端可视化工具
stern多Pod日志聚合

安装方法:

bash
# kubectx + kubens
brew install kubectx

# k9s
brew install derailed/k9s/k9s

总结

核心原则:kubectl 通过 kubeconfig 文件认证集群(默认路径 ~/.kube/config) • 安全提示:生产环境建议配合 --dry-run=client 测试命令 • 学习建议:从 kubectl explain 命令开始探索API文档

掌握这些命令后,能高效管理90%的Kubernetes日常操作!

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer