Привет всем 👋,
Допустим, представим такую ситуацию что вы подняли свеженький кластер OpenShift в закрытой сети без доступа к внешним NTP. Или же просто хотите пофиксить ошибку - NodeClockNotSynchronising
.
В рамках этой заметки поправим это.
Итак, на сервере или локально у себя создаем такую файловую структуру.
mkdir -p shift/manifests/ntp
Затем заходим в неё:
cd shift/manifests/
На нодах шифта для синхронизации времени используется демон - chronyd. Находим конфигурации chrony с помощью grep:
oc get mc | grep chrony
--
50-masters-chrony-configuration 3.1.0 26h
50-workers-chrony-configuration 3.1.0 26h
Эти два конфига нам предстоит изменить. Поэтому выгружаем их содержимое себе локально.
oc get mc 50-masters-chrony-configuration -o yaml > ntp/50-masters-chrony-configuration.yml
oc get mc 50-workers-chrony-configuration -o yaml > ntp/50-workers-chrony-configuration.yml
Для безопасности, рекомендую, сделать бекап конфигураций.
На моей локальной машине, с которой я взаимодействую с кластерами уже настроен chronyd. Поэтому применим их и в конфигурации нод:
cat /etc/chrony.conf | base64 -w0
В результате работы этой команды будет выведено значение в формате закодированной строки. Полученные данные сохраняем себе.
Далее меняем манифест мастер/воркер узлов, редактируем сохраненные yaml-файлы, заменяя значение base64-строки:
vim ntp/50-masters-chrony-configuration.yml
---
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
generation: 1
labels:
machineconfiguration.openshift.io/role: master
name: 50-masters-chrony-configuration
spec:
config:
ignition:
version: 3.1.0
storage:
files:
- contents:
source: data:text/plain;charset=utf-8;base64,<СЮДА_ВСТАВИТЬ_СТРОКУ>
mode: 420
overwrite: true
path: /etc/chrony.conf
vim ntp/50-workers-chrony-configuration.yml
---
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
generation: 1
labels:
machineconfiguration.openshift.io/role: worker
name: 50-workers-chrony-configuration
spec:
config:
ignition:
version: 3.1.0
storage:
files:
- contents:
source: data:text/plain;charset=utf-8;base64,<СЮДА_ВСТАВИТЬ_СТРОКУ>
mode: 420
overwrite: true
path: /etc/chrony.conf
Далее применяем обновленные конфиги:
oc apply -f ntp/50-masters-chrony-configuration.yml
oc apply -f ntp/50-workers-chrony-configuration.yml
Применяйте конфиги с интервалом 5–7 минут, так как в процессе обновление MachineConfig приводит к перезагрузке нод и в кластере начнется ребаланс ресурсов.
Процесс обновления можно мониторить командой:
oc get mcp master
Как только поля UPDATED станет True, а UPDATING — False. Можно применить манифест на воркер узлы.