首页 > 其他 > 详细

kubeadm之证书期限调整

时间:2021-06-03 17:23:51      阅读:33      评论:0      收藏:0      [点我收藏+]
  • 通过 kubeadm 创建的K8S集群默认ca证书期限为10年,其他证书均为1年,虽然可以通过kubeadm、kubelet设置参数来进行证书轮换,但是始终觉得不是很方便,另外kubelet证书轮换需要重启kubelet才会快速生效;所以想偷下懒——修改kubeadm源码调整证书期限。

  • 工具需求:golang、git、make

下载对应版本的kubernetes源码,以1.18.6为例:

git clone https://github.com/kubernetes/kubernetes.git
git checkout v1.18.6 ##切换到v1.18.6的版本
  • 修改cmd/kubeadm/app/constants/constants.go
- CertificateValidity = time.Hour * 24 * 365
+ CertificateValidity = time.Hour * 24 * 365 * 10
  • staging/src/k8s.io/client-go/util/cert/cert.go 中关于时间的参数
- const duration365d = time.Hour * 24 * 365
+ const duration365d = time.Hour * 24 * 365 * 10
  • 修改 hack/lib/version.sh,为了打包后kubeadm的版本不是脏版本(-dirty),脏版本的kubeadm不能升级
      if git_status=$("${git[@]}" status --porcelain 2>/dev/null) && [[ -z ${git_status} ]]; then
        KUBE_GIT_TREE_STATE="clean"
      else
-        KUBE_GIT_TREE_STATE="dirty"
+       KUBE_GIT_TREE_STATE="clean"
      fi
  • 重新编译

    cd kubernetes
    make WHAT=kubeadm
  • 按照上述步骤编译完成后,kubeadm初始化集群时,证书期限均会改变,但是,用kubeadm join 节点时,kubelet节点的证书依然会是1年,这就跟kube-controller-manager有关系了;需要在kube-controller-manager启动参数中增加--experimental-cluster-signing-duration参数(默认为8760h0m0s即1年)。

  • kubeadm-config.yaml
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
...
-controllerManager: {}
+controllerManager: 
+ extraArgs:
+   feature-gates: RotateKubeletServerCertificate=true
+   experimental-cluster-signing-duration: 87600h0m0s
dns:
  type: CoreDNS
  • 修改kubeadm-config.yaml配置文件后,kube-controller-manager 重新加载配置
    kubeadm init --config kubeadm-config.yaml phase control-plane controller-manager

kubeadm之证书期限调整

原文:https://blog.51cto.com/u_12835116/2850446

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!