如何在 Bottlerocket、Ubuntu 或 Redhat 的主節點和工作節點上檢查 EKS Anywhere 叢集元件日誌?

2 分的閱讀內容
0

我想在 Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere 無法建立控制平面或資料平面機器時檢查元件日誌。

簡短描述

建立 Amazon EKS Anywhere 工作負載叢集期間,您可以檢查控制平面、etcd 和資料平面中每台機器的日誌。

若要檢查每台機器中的元件日誌,必須符合以下條件:

  • EKS Anywhere 正在嘗試建立工作負載叢集,而且每台機器都正在進行建立程序。
  • 每台機器都可讓您透過 SSH 在控制平面、etcd 和資料平面上登入。

解決方法

使用 $ kubectl get machines 命令檢查每台機器的狀態。

管理叢集範例:

$ kubectl get machines -A
NAMESPACE     NAME                         CLUSTER   NODENAME      PROVIDERID                                       PHASE     AGE     VERSION
eksa-system   mgmt-etcd-bwnfq              mgmt                    vsphere://4230b0d5-7b14-4753-bd41-3dbe4987dbc4   Running   5h26m
eksa-system   mgmt-etcd-bzm77              mgmt                    vsphere://4230b278-1fb4-f539-0afe-9f12afebf86b   Running   5h26m
eksa-system   mgmt-etcd-dzww2              mgmt                    vsphere://42309b5a-b0ad-58a5-1e40-5fe39a3d1640   Running   5h26m
eksa-system   mgmt-jw8dl                   mgmt      10.4.11.19    vsphere://42304059-c833-48d3-9856-7f902c852743   Running   5h26m   v1.24.9-eks-1-24-7
eksa-system   mgmt-md-0-66b858b477-6cbcz   mgmt      10.4.35.76    vsphere://4230efad-5d42-c570-36c5-bf9ee92ee011   Running   5h26m   v1.24.9-eks-1-24-7
eksa-system   mgmt-md-0-66b858b477-8h88c   mgmt      10.4.19.38    vsphere://4230edbf-db9b-3ae9-a2e6-8421e06863fb   Running   5h26m   v1.24.9-eks-1-24-7
eksa-system   mgmt-s7fb7                   mgmt      10.4.67.152   vsphere://42301d6f-feb1-d967-9750-148d0823c7b5   Running   5h26m   v1.24.9-eks-1-24-7

檢查機器狀態並確認您可以檢查其元件日誌之後,請透過 SSH 登入每部機器。在以下範例中,user 是在每個供應商的 MachineConfig 中指定的 SSH 登入使用者:

$ ssh -i private_key_file user@Machine_IP_address

視您機器的作業系統 (OS) 而定,請遵循相關步驟檢查其元件日誌。

注意:****控制平面區段是指叢集名稱前綴為 ("cluster_name-") 的機器。etcd 區段是指叢集名稱和 etcd 前綴為 ("cluster_name-etcd-") 的機器。資料平面區段是指叢集名稱和工作節點名稱前綴為 ("cluster_name-worker_node_name-") 的機器。根據 ClusterConfig 設定的不同,etcd 可能沒有專用機器,而是在控制平面上啟動。

配備 BottleRocket OS 的機器

當您使用 SSH 登入時,也會同時登入管理員容器。為了進行偵錯,請先使用以下命令取得根權限,然後再檢查日誌:

$ sudo sheltie

控制平面

對於 kubelet 日誌,請執行下列命令:

# journalctl -u kubelet.service --no-pager

對於容器日誌,請執行下列命令:

# journalctl -u containerd.service --no-pager

對於機器初始化日誌,請執行下列命令:

# journalctl _COMM=host-ctr --no-pager

對於每個容器日誌,請檢查 /var/log/containers 目錄中的日誌。

對於 Kubernetes kube-apiserverkube-controller-managerkube-schedulerkube-vip manifests,請檢查 /etc/kubernetes/manifest 目錄中的檔案。

etcd

對於容器日誌,請執行下列命令::

# journalctl -u containerd.service --no-pager

對於機器初始化日誌,請執行下列命令::

# journalctl _COMM=host-ctr --no-pager

對於 etcd 日誌,請查看 /var/log/containers 目錄。

資料平面

對於 kubelet 日誌,請執行下列命令:

# journalctl -u kubelet.service --no-pager

對於容器日誌,請執行下列命令:

# journalctl -u containerd.service --no-pager

對於機器初始化日誌,請執行下列命令:

# journalctl _COMM=host-ctr

對於每個容器日誌,請檢查 /var/log/containers 目錄中的日誌。

**注意:**如果您使用 AWS Snow 作為供應商,請一併在每個節點上檢查下列命令的結果:

# journalctl -u bootstrap-containers@bottlerocket-bootstrap-snow.service
# systemctl status bootstrap-containers@bottlerocket-bootstrap-snow

配備 Ubuntu 或 Red Hat Enterprise Linux OS 的機器

為了進行偵錯,請先使用以下命令取得根權限,然後再檢查日誌:

$ sudo su -

控制平面

對於 kubelet 日誌,請執行下列命令:

# journalctl -u kubelet.service --no-pager

對於容器日誌,請執行下列命令:

# journalctl -u containerd.service --no-pager

對於機器初始化日誌,請執行下列命令:

# cat /var/log/cloud-init-output.log

對於每個容器日誌,請檢查 /var/log/containers 目錄中的日誌。

對於機器啟動時初始化的使用者資料,請執行下列命令:

# cat /var/lib/cloud/instance/user-data.txt

對於 Kubernetes kube-apiserverkube-controller-managerkube-schedulerkube-vip manifests,請檢查 /etc/kubernetes/manifest 目錄中的檔案。

etcd

對於 etcd 日誌,請執行下列命令:

# journalctl -u etcd.service --no-pager

對於機器初始化日誌,請執行下列命令:

# cat /var/log/cloud-init-output.log

對於機器啟動時初始化的使用者資料,請執行下列命令:

# cat /var/lib/cloud/instance/user-data.txt

資料平面

對於 kubelet 日誌,請執行下列命令:

# journalctl -u kubelet.service --no-pager

對於容器日誌,請執行下列命令:

# journalctl -u containerd.service --no-pager

對於機器初始化日誌,請執行下列命令:

# cat /var/log/cloud-init-output.log

對於機器啟動時初始化的使用者資料,請執行下列命令:

cat /var/lib/cloud/instance/user-data.txt

對於每個容器日誌,請檢查 /var/log/containers 目錄中的日誌。

AWS 官方
AWS 官方已更新 2 年前