Есть ли возможность показать, что metadata.google.internal
используется как NTP, когда я подключаюсь к модулю или виртуальной машине Kubernetes? Я пробовал следующее: ntpq -p
, что приводит к тому, что команда не найдена, но была указана в https://cloud.google.com/compute/docs/instances/managing-instances. Этот файл не существует: vim /etc/ntp.conf
. Мне это нужно как доказательство, показывающее, какой сервер используется.
Когда вы создаете кластер GKE, у вас есть возможность указать, какая операционная система будет базой для вашей установки Kubernetes. У вас есть варианты на выбор:
Вы можете выбрать его, пройдя по пути в Google Cloud Platform:
Kubernetes Engine -> Создайте кластер Kubernetes -> Узлы-пулы -> пул по умолчанию -> Узлы -> Тип изображения.
То, что вы выберете, повлияет на то, какие инструменты вы сможете использовать внутри узлов.
Несколько слов об ОС, оптимизированной для контейнеров:
Оптимизированная для контейнеров ОС - это образ операционной системы для вашего Compute Engine ВМ, оптимизированные для запуска контейнеров Docker. С ОС, оптимизированной для контейнеров, вы можете быстро, эффективно и безопасно выводить свои контейнеры Docker на Google Cloud Platform. Оптимизированная для контейнеров ОС поддерживается Google и основана на открытом исходном коде. Chromium OS проект.
Ознакомьтесь с официальной документацией, в которой рассказывается о функциях, преимуществах и ограничениях ОС, оптимизированной для контейнеров: Cloud.google.com: особенности, преимущества и ограничения ОС, оптимизированные для контейнеров
ОС, оптимизированная для контейнеров, не включает диспетчер пакетов; поэтому вы не сможете устанавливать пакеты программного обеспечения непосредственно на экземпляр. Однако вы можете использовать Набор инструментов CoreOS для установки и запуска средств отладки и администрирования в изолированном контейнере.
Как сказано в вышеупомянутой документации, диспетчера пакетов нет, но вы можете использовать набор инструментов CoreOS для отладки и установки необходимого программного обеспечения.
Вы можете проверить, какой сервер используется вашим узлом ОС, оптимизированной для контейнеров, с помощью systemd следующим образом:
$ systemctl status systemd-timesyncd
Он должен дать вам примерно такой результат:
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-03-03 21:17:35 UTC; 6 days ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 219 (systemd-timesyn)
Status: "Synchronized to time server 169.254.169.254:123 (169.254.169.254)."
Tasks: 2 (limit: 4915)
Memory: 832.0K
CPU: 591ms
CGroup: /system.slice/systemd-timesyncd.service
└─219 /usr/lib/systemd/systemd-timesyncd
Пожалуйста, обратите внимание на
Status: "Synchronized to time server 169.254.169.254:123 (169.254.169.254)."
Вышеупомянутое сообщение указывает, какой сервер используется узлом для синхронизации времени.
Вы можете получить дополнительную информацию об IP-адресе 169.254.169.254
следующим образом: Serverfault.com: Что это за IP-адрес 169.254.169.254
Вы можете проверить DNS-имя 169.254.169.254
с упомянутым CoreOS Toolbox на вашем узле и nslookup
:
$ /usr/bin/toolbox
$ apt-get install -y dnsutils
$ nslookup 169.254.169.254
Он должен дать вам результат:
Server: 169.254.169.254
Address: 169.254.169.254#53
Non-authoritative answer:
254.169.254.169.in-addr.arpa name = metadata.google.internal.
Authoritative answers can be found from:
Приведенный выше вывод указывает, что адрес 169.254.169.254
упомянутый metadata.google.internal
С кластером GKE, созданным с помощью образа Ubuntu, вы проверяете информацию NTP с помощью:
ntptrace
nslookup
Вы можете проверить, какой сервер NTP используется вашим узлом Ubuntu так же, как и в ОС, оптимизированной для контейнеров, следующим образом:
$ systemctl status systemd-timesyncd
Аренда DHCP содержит информацию о сервере NTP. Вы можете получить информацию об аренде DHCP следующим образом:
USER@NODE:~$ cat /var/lib/dhcp/dhclient.leases
Вывод вышеуказанной команды должен выглядеть следующим образом:
lease {
interface "eth0";
fixed-address 10.156.0.X;
option subnet-mask 255.255.255.255;
option routers 10.156.0.1;
option dhcp-lease-time 86400;
option dhcp-message-type 5;
option domain-name-servers 169.254.169.254;
option dhcp-server-identifier 169.254.169.254;
option interface-mtu 1460;
option domain-search "X.internal.", "Y.internal";
option ntp-servers 169.254.169.254;
option rfc3442-classless-static-routes 32,10,156,0,1,0,0,0,0,0,10,156,0,1;
option host-name "X.internal";
option domain-name "X.internal";
renew 2 2020/03/10 09:12:37;
rebind 2 2020/03/10 18:40:09;
expire 2 2020/03/10 21:40:09;
}
Пожалуйста, обратите внимание на:
option ntp-servers 169.254.169.254;
Эта строка указывает используемый NTP-сервер.
Ntptrace
должен показать 169.254.169.254
следующим образом:
localhost: stratum 3, offset 0.000058, synch distance 0.026242
169.254.169.254: timed out, nothing received
***Request timed out
Вы можете проверить ntp-server
с участием nslookup
таким же образом, как и в CoreOS Toolbox, если он соответствует metadata.google.internal
.
Пожалуйста, дайте мне знать, если у вас возникнут вопросы по этой теме.