列出 gcloud kubernetes 的 NTP 信息

列出 gcloud kubernetes 的 NTP 信息

当我连接到 pod 或 kubernetes VM 时,是否有显示用作 NTP 的选项metadata.google.internal?我尝试了以下操作:ntpq -p,结果显示未找到命令,但已在https://cloud.google.com/compute/docs/instances/managing-instances。此文件不存在:vim /etc/ntp.conf。我需要它作为证明,显示使用了哪个服务器。

答案1

创建 GKE 集群时,您可以选择指定哪个操作系统作为 Kubernetes 安装的基础。您可以选择以下选项:

  • 容器优化操作系统 (cos)
  • 带有 containerd 的容器优化操作系统 (cos)
  • Ubuntu
  • 带有 containerd 的 Ubuntu

您可以按照 Google Cloud Platform 中的路径进行选择:

Kubernetes 引擎->创建 Kubernetes 集群->节点池->默认池->节点->图像类型

您的选择将影响您可以在节点上内部使用的工具。


容器优化操作系统

关于容器优化操作系统的一句话:

容器优化操作系统是您的计算引擎针对运行 Docker 容器进行了优化的虚拟机。借助 Container-Optimized OS,您可以快速、高效、安全地在 Google Cloud Platform 上启动 Docker 容器。Container-Optimized OS 由 Google 维护,基于开源Chromium 操作系统项目。

-- Cloud.google.com:针对容器优化的操作系统

请查看官方文档,其中介绍了 Container-Optimized OS 的功能、优点和局限性:Cloud.google.com:容器优化的操作系统特性、优势和局限性

Container-Optimized OS 不包含包管理器;因此,您无法直接在实例上安装软件包。但是,您可以使用CoreOS 工具箱在隔离容器中安装并运行调试和管理工具。

正如上述文档所述,没有可用的包管理器,但您可以使用 CoreOS 工具箱来调试和安装所需的软件。

您可以使用 systemd 检查您的 Container-Optimized OS 节点使用了哪个服务器,如下所示:

$ 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)."

以上消息表示节点使用哪个服务器来同步时间。

您可以169.254.169.254通过以下方式获取有关 IP 地址的更多信息:Serverfault.com:这个 IP 地址 169.254.169.254 是什么

169.254.169.254您可以在节点上使用所提到的 CoreOS Toolbox检查 DNS 名称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

使用 Ubuntu 映像创建的 GKE 集群,您可以使用以下方式检查 NTP 信息:

  • systemd
  • DHCP 租约
  • ntptrace
  • nslookup

系统化

您可以像使用 Container-Optimized OS 一样检查您的 Ubuntu 节点使用哪个 NTP 服务器,如下所示:

$ 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应显示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

查找工具

您可以按照与 CoreOS Toolbox 中相同的方式检查它是否与ntp-server匹配 。nslookupmetadata.google.internal

如果您对此主题有任何疑问,请告诉我。

答案2

2024 更新答案以反映变化:

https://cloud.google.com/compute/docs/instances/configure-ntp
^-- 指出 Linux VM 使用 ntpd 或 chronyd

  • 尝试 ssh 进入 GKE 节点
  • 提示:您可以按照以下说明进行操作https://cloud.google.com/iap/docs/using-tcp-forwarding,添加一个 VPC 防火墙规则,允许从 GCP 的 IAP(身份感知代理)进行 SSH,这将允许通过浏览器进行 ssh 以及使用 gcloud 命令进行 ssh 自动工作。

从那里尝试以下操作:

systemctl list-units | grep ntp
systemctl list-units | grep time
systemctl list-units | grep chrony
# chronyd.service         loaded active running   NTP client/server
# ^-- ok proof chronyd is installed and maintaining NTP

systemctl status chronyd
# ^-- works but not much of interest

chronyc sources
# MS Name/IP address         Stratum Poll Reach LastRx Last sample
# ===============================================================================
# ^* metadata.google.internal      2   8   377   187  -3733ns[-4873ns] +/-  315us

^-- chronyc 源(我从 GCP 的文档中了解到它的存在)
显示正在使用默认 NTP 服务器(metadata.google.internal)

相关内容