Назад | Перейти на главную страницу

Список информации о NTP для gcloud kubernetes

Есть ли возможность показать, что metadata.google.internal используется как NTP, когда я подключаюсь к модулю или виртуальной машине Kubernetes? Я пробовал следующее: ntpq -p, что приводит к тому, что команда не найдена, но была указана в https://cloud.google.com/compute/docs/instances/managing-instances. Этот файл не существует: vim /etc/ntp.conf. Мне это нужно как доказательство, показывающее, какой сервер используется.

Когда вы создаете кластер GKE, у вас есть возможность указать, какая операционная система будет базой для вашей установки Kubernetes. У вас есть варианты на выбор:

  • Оптимизированная для контейнеров ОС (cos)
  • Оптимизированная для контейнеров ОС (cos) с containerd
  • Ubuntu
  • Ubuntu с containerd

Вы можете выбрать его, пройдя по пути в Google Cloud Platform:

Kubernetes Engine -> Создайте кластер Kubernetes -> Узлы-пулы -> пул по умолчанию -> Узлы -> Тип изображения.

То, что вы выберете, повлияет на то, какие инструменты вы сможете использовать внутри узлов.


ОС, оптимизированная для контейнеров

Несколько слов об ОС, оптимизированной для контейнеров:

Оптимизированная для контейнеров ОС - это образ операционной системы для вашего Compute Engine ВМ, оптимизированные для запуска контейнеров Docker. С ОС, оптимизированной для контейнеров, вы можете быстро, эффективно и безопасно выводить свои контейнеры Docker на Google Cloud Platform. Оптимизированная для контейнеров ОС поддерживается Google и основана на открытом исходном коде. Chromium OS проект.

- Cloud.google.com: ОС, оптимизированная для контейнеров

Ознакомьтесь с официальной документацией, в которой рассказывается о функциях, преимуществах и ограничениях ОС, оптимизированной для контейнеров: 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


Ubuntu

С кластером GKE, созданным с помощью образа Ubuntu, вы проверяете информацию NTP с помощью:

  • systemd
  • аренда dhcp
  • ntptrace
  • nslookup

Systemd

Вы можете проверить, какой сервер NTP используется вашим узлом Ubuntu так же, как и в ОС, оптимизированной для контейнеров, следующим образом:

$ systemctl status systemd-timesyncd

Аренда DHCP

Аренда 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

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

Nslookup

Вы можете проверить ntp-server с участием nslookup таким же образом, как и в CoreOS Toolbox, если он соответствует metadata.google.internal.

Пожалуйста, дайте мне знать, если у вас возникнут вопросы по этой теме.