Skip to content

kubectl config - Kubernetes 配置管理命令

kubectl config 是 Kubernetes 中用于管理 kubeconfig 配置文件的命令,它可以查看、修改和切换集群、上下文和用户配置,是多集群管理的关键工具。

基本语法

bash
kubectl config <SUBCOMMAND> [options]

核心子命令

子命令功能示例
view查看当前配置kubectl config view
use-context切换上下文kubectl config use-context prod-cluster
current-context显示当前上下文kubectl config current-context
get-contexts列出所有上下文kubectl config get-contexts
set-context修改上下文配置kubectl config set-context --current --namespace=kube-system
set-cluster设置集群配置kubectl config set-cluster my-cluster --server=https://api.my-cluster:6443
set-credentials设置用户凭证kubectl config set-credentials admin --client-certificate=admin.crt --client-key=admin.key

配置文件位置

默认配置文件路径:~/.kube/config
可以通过设置 KUBECONFIG 环境变量指定其他路径:

bash
export KUBECONFIG=~/.kube/config-prod

典型使用场景

1. 多集群管理

bash
# 列出所有可用上下文(集群+用户+命名空间组合)
kubectl config get-contexts

# 切换上下文(集群)
kubectl config use-context dev-cluster

# 查看当前使用的上下文
kubectl config current-context

2. 命名空间管理

bash
# 修改当前上下文的默认命名空间
kubectl config set-context --current --namespace=kube-system

# 验证当前命名空间
kubectl config view --minify | grep namespace:

3. 集群配置管理

bash
# 添加新集群配置
kubectl config set-cluster prod-cluster \
  --server=https://api.prod-cluster:6443 \
  --certificate-authority=ca.crt

# 查看集群配置详情
kubectl config view -o jsonpath='{.clusters[?(@.name=="prod-cluster")]}'

4. 用户凭证管理

bash
# 添加新用户凭证
kubectl config set-credentials admin-user \
  --client-certificate=admin.crt \
  --client-key=admin.key

# 使用用户名密码认证
kubectl config set-credentials dev-user --username=dev --password=secret

高级用法

1. 合并多个配置文件

bash
# 临时合并多个配置
export KUBECONFIG=~/.kube/config:~/.kube/config-prod
kubectl config view --merge --flatten > ~/.kube/config-merged

# 使用合并后的配置
cp ~/.kube/config-merged ~/.kube/config

2. 配置自动补全

bash
# 为 kubectl config 启用命令补全
source <(kubectl completion bash)
complete -F __start_kubectl kubectl

3. 安全操作

bash
# 删除集群配置
kubectl config delete-cluster old-cluster

# 删除用户凭证
kubectl config delete-credentials old-user

# 删除上下文
kubectl config delete-context old-context

注意事项

  1. 配置文件结构

    • clusters:集群列表(API server 地址、CA 证书等)
    • users:用户认证信息
    • contexts:关联集群、用户和命名空间
    • current-context:当前使用的上下文
  2. 安全建议

    • 不要将 kubeconfig 文件提交到版本控制系统
    • 定期轮换凭证和证书
    • 使用最小权限原则配置 RBAC
  3. 常见问题

    • 证书过期:Unable to connect to the server: x509: certificate has expired or is not yet valid
    • 上下文不存在:error: no context exists with the name: "nonexistent-context"
    • 权限不足:error: You must be logged in to the server (Unauthorized)

最佳实践

  1. 多环境管理

    bash
    # 为不同环境创建别名
    alias kprod='kubectl config use-context prod-cluster'
    alias kdev='kubectl config use-context dev-cluster'
  2. 配置验证

    bash
    # 验证配置是否正确
    kubectl config view --raw -o json | jq .
    
    # 测试集群连接
    kubectl cluster-info
  3. 备份配置

    bash
    # 定期备份 kubeconfig
    cp ~/.kube/config ~/.kube/config.bak.$(date +%Y%m%d)

kubectl config 是 Kubernetes 多集群管理的核心工具,熟练掌握可以极大提高工作效率。建议结合 RBAC 和命名空间等功能,构建安全高效的多集群管理方案。