説明
TKEは、北京時間2020年9月21日(月)23:00 - 9月22日(火)06:00の間、kubeconfigファイルの発行を停止します。
問題の背景
現在TKEは、ノードデフォルトでadmin tokenを含むKubeconfigファイルを配置しており、ユーザーはこのKubeconfigファイルを介して簡単にKubernetesクラスターを操作することができますが、ユーザーノードのログイン制限管理の不注意で、クラスターのセキュリティリスクを引き起こす可能性があります。そのためKubeconfigファイルの発行を停止することにしました。
既存のクラスターが、ユーザー自作スクリプトの中でKubeconfigファイルを使用し、クラスターに対して一部の初期化操作を行うことを考慮し、ユーザーが初期化ノードを使用するための権限が同じで有効期限が12時間のクライアント証明書を発行します。証明書の期限が切れると、このKubeconfigファイルもそれに応じて無効化します。利用される場合は、問題の影響および処理対策をご参照の上、操作してください。 問題の影響および処理対策
問題の現象
ユーザーが習慣的に、次のコマンドでTKEクラスターログインノードにKubectl操作を行う場合、コマンドとエラー情報は下記のとおりです。
$ kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
$ kubectl get node
error: You must be logged in to the server (Unauthorized)
処理対策
2. 現在使用しているアカウントの証明書情報Kubeconfigファイルを取得する場合は、 証明書の取得をご参照ください。 3. Kubeconfigファイル取得後は、プライベートネットワークアクセスの有効化を選択できますし、直接 Kubernetesのservice IPを使用することもできます。
プライベートネットワークアクセスの有効化:クラスターの詳細ページで、左側の基本情報を選択し、「クラスターAPIServer情報」でプライベートネットワークアクセスを有効化の上、表示される情報に従い操作を行います。
Kubernetesのservice IPを使用する:クラスター詳細ページで、左側のサービスとルーティング > Serviceを選択してdefaultネームスペースにあるKubernetesのservice IPを取得します。 Kubeconfigファイル内のclusters.cluster.serverフィールドをhttps://<IP>:443に置換すれば完了です。
4. Kubeconfigファイルの内容を新しいノード上の$HOME/.kube/configにコピーします。
5. Kubeconfigクラスターにアクセスし、kubectl get nodes を使用して接続しているかどうかをテストします。
特殊なケースの処理
特殊なケース
workloadはすでにhostをマウントした /root/.kube/configあるいは/home/ubuntu/.kube/configファイルで使用します。
処理対策