現象の問題や原因の一つ
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 真の 3#1 よりオートリロード証明書の交換を含む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