どのようにKubelet証明書の自動更新

現象の問題や原因の一つ

Kubernetesログエラー

そこKubernetesクラスタは、ログインすると  certificate has expired or is not yet valid 、証明書の期限が切れていることを示すエラーメッセージを

証明書は、その理由を期限切れ

  • 期限切れの証明書につながる間違った時にはサーバー、
  • 実際、証明書の有効期限が切れ

証明書は、多くの学生は非常に混同され、有効期限が切れ、私は明らかに証明書が签署10年有効であるか、更久どれだけ、1年就过期了疑問への上、下記、。

Kubernetesクラスタ証明書

クラスタのための1:証明書は、二つのクラスタに分割された  Master、Etcd証明書の通信等。クラスタのための第二に、  Kubelet コンポーネント証明書

KubeletアセンブリピットクラスタKubernetes

我々は、一般的にのみ、クラスタのための宣言、Kubernetesクラスタを構築すると  Master、Etcd通信などの資格情報  10年 や  更久、しかし、クラスタを宣言していない  Kubelet 组件证书 、Kubelet 组件证书 デフォルトでは有効です1年クラスタで実行年の報告の後につながる  certificate has expired or is not yet valid につながる、エラー集群 Nodeさせない集群 Master適切に通信します。

第二に、ソリューション

パラメータを追加します。

  • 変更は  kubelet 组件配置、以下の特定のパラメータを追加します

    1 --feature-ゲート= = RotateKubeletServerCertificate trueに
    2 --feature、ゲート= = RotateKubeletClientCertificate 真の
    31 よりオートリロード証明書の交換を含む0.8バージョン1.8サポート、サービスのバージョンは、手動で再起動することができる
     。4 --rotate、証明
  • 変更は  controller-manager 组件配置、以下の特定のパラメータを追加します 

  • 1つの #証明書は10年間有効である
     2  
    。3 --experimentalクラスタ署名-DURATION = 87600h0m0s
     。4  
    。5 --feature・ゲイツ= = RotateKubeletServerCertificate trueに

CSRは、自動的に作成さClusterRole関連の要求を承認されました

vimのTLS-指示する-csr.yaml && kubectl -f TLS-指示する-csr.yamlを適用

  • 1  種類:ClusterRole
     2 apiVersion:rbac.authorization.k8s.io/ V1
     3  メタデータ:
     4    名:システム:certificates.k8s.io:certificatesigningrequests:selfnodeserver
     5つの ルール:
     6 - apiGroups:[ " certificates.k8s.io " ]
     7    リソース:[ " certificatesigningrequests / selfnodeserver " ]
     8つの    動詞:[ " 作成" ]
#自動的にCSR要求の証明書の最初のアプリケーションをブートストラップkubelet・ブートストラップ・ユーザーTLS承認
nodeclient-自動承認clusterrolebinding作成kubectl certificates.k8s.io:certificatesigningrequests:nodeclient --user = kubeletブートストラップ-csr --clusterrole =システム

 

#自動承認システム自体を更新するユーザのグループをノードとCSR証明書要求のapiserverのkubelet通信は、
ノード・クライアントオートclusterrolebinding作成kubectl -renew-CRT --clusterrole =システム:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group =システム:ノード
#自動承認システム:ノードがユーザポートのセットが10250のAPI CSR証明書要求がkubelet更新
ノードサーバオートclusterrolebinding作成kubectl certificates.k8s.io:certificatesigningrequests:selfnodeserver --group =システム:-renew-CRT --clusterrole =システムノード

 再起動KUBE-コントローラマネージャとkubeletサービス

1 $ systemctlデーモンリロード(Reload)2 $ systemctl再起動コントローラー-manager.service Kube-
 3  #sslの設定ディレクトリに、削除kubelet証明書
 4 $ RM -f kubelet-クライアントcurrent.pem kubelet-のClient * の.pem kubelet.key kubelet.crt
 5  
6  #、再起動を開始し、授与されますSSL証明書は、通常の開始後10年間有効である
 7  $ systemctl再起動kubelet
 8  
9  
10  、SSL設定ディレクトリに#証明書が有効です閲覧
 11 $のOpenSSL X509 -  kubelet-クライアントの現在。 -noout -text PEM | grepを " " 
12       の前ではなく:11月22日8時46分00秒GMT 2019 
13未後:11月19日8時46分00秒2029 GMT

 

おすすめ

転載: www.cnblogs.com/lvcisco/p/11912637.html