You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes V1.9如何获取kubelet.conf?V1.9.3 RBAC集群配置疑问

Kubernetes 1.9.3 中获取kubelet.conf的方法及组件启动问题排查

刚巧我之前也折腾过K8s 1.9版本的手动集群搭建,结合你从1.6升级过来的情况,给你梳理下解决方案:

一、获取kubelet.conf的两种方式

1. 自动生成(推荐,沿用bootstrap流程)

K8s 1.9依然支持kubelet通过bootstrap自动获取证书并生成kubelet.conf,只是部分参数有调整,步骤如下:

  • 首先确保你已经准备好bootstrap-kubelet.conf文件,里面包含向apiserver请求证书的权限(需要提前在apiserver端配置好system:node-bootstrapper的ClusterRole和对应的ClusterRoleBinding,绑定到system:nodes组)
  • 启动kubelet时,指定以下关键参数:
    kubelet \
      --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf \
      --kubeconfig=/etc/kubernetes/kubelet.conf \
      --rotate-certificates=true \
      --node-name=<你的节点名称>
    

    注意:--kubeconfig指定的kubelet.conf文件初始可以不存在,kubelet会自动向apiserver发起证书签名请求(CSR),当你通过kubectl certificate approve <csr-name>批准后,kubelet会自动生成kubelet.conf以及对应的证书文件(kubelet.crt、kubelet.key等)

2. 手动生成(适合自定义配置场景)

如果需要手动控制证书生成流程,可以按以下步骤操作:

  1. 生成kubelet私钥和CSR:
    openssl genrsa -out /etc/kubernetes/pki/kubelet.key 2048
    openssl req -new -key /etc/kubernetes/pki/kubelet.key -out /etc/kubernetes/pki/kubelet.csr -subj "/CN=system:node:<你的节点名称>/O=system:nodes"
    
  2. 创建并批准CSR资源:
    kubectl create csr node-<你的节点名称> --certificate-request-file=/etc/kubernetes/pki/kubelet.csr --key=/etc/kubernetes/pki/kubelet.key
    kubectl certificate approve node-<你的节点名称>
    
  3. 下载批准后的证书:
    kubectl get csr node-<你的节点名称> -o jsonpath='{.status.certificate}' | base64 -d > /etc/kubernetes/pki/kubelet.crt
    
  4. 生成kubelet.conf配置文件:
    kubectl config set-cluster kubernetes \
      --certificate-authority=/etc/kubernetes/pki/ca.crt \
      --server=https://<apiserver地址>:6443 \
      --kubeconfig=/etc/kubernetes/kubelet.conf
    
    kubectl config set-credentials system:node:<你的节点名称> \
      --client-certificate=/etc/kubernetes/pki/kubelet.crt \
      --client-key=/etc/kubernetes/pki/kubelet.key \
      --kubeconfig=/etc/kubernetes/kubelet.conf
    
    kubectl config set-context default \
      --cluster=kubernetes \
      --user=system:node:<你的节点名称> \
      --kubeconfig=/etc/kubernetes/kubelet.conf
    
    kubectl config use-context default --kubeconfig=/etc/kubernetes/kubelet.conf
    

二、组件启动问题排查方向

你提到apiserver、调度器和控制器管理器已启动但有问题,结合1.6到1.9的版本差异,重点检查以下几点:

  • RBAC权限配置:1.9版本默认强制开启RBAC,你需要确保控制器管理器、调度器等组件对应的ClusterRole和ClusterRoleBinding配置正确(比如system:controller-manager、system:scheduler角色需要绑定到对应的ServiceAccount)
  • 准入控制参数变更:1.9版本将原--admission-control参数替换为--enable-admission-plugins,如果你需要启用RBAC、NodeRestriction等插件,需要调整为类似--enable-admission-plugins=NamespaceLifecycle,RBAC,NodeRestriction的配置
  • 证书与kubeconfig有效性:检查组件的kubeconfig文件中证书路径、apiserver地址是否正确,证书是否过期或未被CA签名
  • 废弃参数清理:1.6到1.9有不少参数被废弃或重命名,比如apiserver的--insecure-port默认禁用,控制器管理器的部分旧版权限参数需要更新,建议对照官方文档清理废弃参数

内容的提问来源于stack exchange,提问作者yoh852

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:58:14