This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.5.8.3. クラスターノードが DHCP 経由で正しいホスト名を取得しない
IPv6 のデプロイメント時に、クラスターノードは DHCP でホスト名を取得する必要があります。NetworkManager
はホスト名をすぐに割り当てない場合があります。コントロールプレーン (マスター) ノードは、以下のようなエラーを報告する可能性があります。
Failed Units: 2 NetworkManager-wait-online.service nodeip-configuration.service
Failed Units: 2
NetworkManager-wait-online.service
nodeip-configuration.service
このエラーは、最初に DHCP サーバーからホスト名を受信せずにクラスターノードが起動する可能性があることを示しています。これにより、kubelet
が localhost.localdomain
ホスト名で起動します。エラーに対処するには、ノードによるホスト名の更新を強制します。
手順
hostname
を取得します。hostname
[core@master-X ~]$ hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホスト名が
localhost
の場合は、以下の手順に進みます。注記X
は、コントロールプレーンノード (別名マスターノード) 番号になります。クラスターノードによる DHCP リースの更新を強制します。
sudo nmcli con up "<bare-metal-nic>"
[core@master-X ~]$ sudo nmcli con up "<bare-metal-nic>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bare-metal-nic>
を、baremetal
ネットワークに対応する有線接続に置き換えます。hostname
を再度確認します。hostname
[core@master-X ~]$ hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホスト名が
localhost.localdomain
の場合は、NetworkManager
を再起動します。sudo systemctl restart NetworkManager
[core@master-X ~]$ sudo systemctl restart NetworkManager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ホスト名がまだ
localhost.localdomain
の場合は、数分待機してから再度確認します。ホスト名がlocalhost.localdomain
のままの場合は、直前の手順を繰り返します。 nodeip-configuration
サービスを再起動します。sudo systemctl restart nodeip-configuration.service
[core@master-X ~]$ sudo systemctl restart nodeip-configuration.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このサービスは、正しいホスト名の参照で
kubelet
サービスを再設定します。kubelet が直前の手順で変更された後にユニットファイル定義を再読み込みします。
sudo systemctl daemon-reload
[core@master-X ~]$ sudo systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubelet
サービスを再起動します。sudo systemctl restart kubelet.service
[core@master-X ~]$ sudo systemctl restart kubelet.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubelet
が正しいホスト名で起動されていることを確認します。sudo journalctl -fu kubelet.service
[core@master-X ~]$ sudo journalctl -fu kubelet.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
再起動時など、クラスターの稼働後にクラスターノードが正しいホスト名を取得しない場合、クラスターの csr
は保留中になります。csr
は承認 しません。承認すると、他の問題が生じる可能性があります。
csr
の対応
クラスターで CSR を取得します。
oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保留中の
csr
にSubject Name: localhost.localdomain
が含まれているかどうかを確認します。oc get csr <pending_csr> -o jsonpath='{.spec.request}' | base64 --decode | openssl req -noout -text
$ oc get csr <pending_csr> -o jsonpath='{.spec.request}' | base64 --decode | openssl req -noout -text
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Subject Name: localhost.localdomain
が含まれるcsr
を削除します。oc delete csr <wrong_csr>
$ oc delete csr <wrong_csr>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow