簡體   English   中英

如何使用 kubectl 檢查應用程序的容器/pod 是否分布到 AWS EKS 集群中的不同可用區?

[英]How to use kubectl to check the containers/pods of an application are spread to different AZs in an AWS EKS cluster?

我想看看應用程序的容器在集群中是如何分布/傳播的。 用什么命令可以查出來? 我想檢查容器是否都在同一個 AZ 中運行。

您可以將 kubectl 與自定義列一起使用以獲取任何自定義 output。因此,這取決於 EKS 使用哪些狀態數據(如果有)豐富 pod。 我建議檢查它是否設置了任何 EKS 特定標簽或注釋。

我可以提供自定義列的示例,以便您了解如何使用它:

kubectl get pods -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,REQUESTS_CPU:.spec.containers[*].resources.requests.cpu,REQUESTS_MEMORY:.spec.containers[*].resources.requests.memory,LIMIT_CPU:.spec.containers[*].resources.limits.cpu,LiMIT_MEMORY:.spec.containers[*].resources.limits.memory'

該命令將向您顯示集群上的所有 pod 以及其 CPU 和 memory 請求的設置方式:

NAMESPACE       NAME                                       REQUESTS_CPU   REQUESTS_MEMORY   LIMIT_CPU   LiMIT_MEMORY
cattle-system   rancher-7c676f75c-29jrz                    <none>         <none>            <none>      <none>
cattle-system   rancher-7c676f75c-dz4k4                    <none>         <none>            <none>      <none>
cattle-system   rancher-7c676f75c-hzs5q                    <none>         <none>            <none>      <none>
cert-manager    cert-manager-646c67487-8j4wz               <none>         <none>            <none>      <none>
cert-manager    cert-manager-cainjector-7cb8669d6b-sxklw   <none>         <none>            <none>      <none>
cert-manager    cert-manager-webhook-696c5db7ff-vzjdl      <none>         <none>            <none>      <none>
ingress-nginx   ingress-nginx-admission-create-mt4cb       <none>         <none>            <none>      <none>
ingress-nginx   ingress-nginx-admission-patch-99p6p        <none>         <none>            <none>      <none>
ingress-nginx   nginx-ingress-controller-5dpjh             <none>         <none>            <none>      <none>
kube-system     coredns-59499769fb-4m6m2                   100m           70Mi              <none>      170Mi
kube-system     coredns-autoscaler-67cbd4599c-7ld97        20m            10Mi              <none>      <none>
kube-system     kube-flannel-5fgzm                         100m           50Mi              100m        50Mi
kube-system     metrics-server-585b7cc746-bzksn            100m           200Mi             <none>      <none>
kube-system     rke-coredns-addon-deploy-job-jjj4k         <none>         <none>            <none>      <none>
kube-system     rke-ingress-controller-deploy-job-htrkn    <none>         <none>            <none>      <none>
kube-system     rke-metrics-addon-deploy-job-fqzpd         <none>         <none>            <none>      <none>
kube-system     rke-network-plugin-deploy-job-kffmk        <none>         <none>            <none>      <none>

為了弄清楚您可以在自定義列中包含哪些可用數據,我建議您獲取一個 pod,並將其顯示為 YAML,例如

kubectl get pod -n kube-system coredns-59499769fb-4m6m2 -o yaml 

當您查看該 YAML 時,您將能夠了解如何引用您的自定義列 output。

對於每個服務,kube.netes 創建一個相應的端點資源,其中包含 pod 的 IP 地址。 您可以使用

kubectl describe endpoints <service-name>

找出那些IP。 然后你可以看看他們屬於哪個su.nets。

如果你想讓你的 pod 分布在你的可用區之間,請查看 pod 拓撲傳播約束:

https://kube.netes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM