簡體   English   中英

如何使用 kubectl 識別 kubernetes 集群提供者

[英]How to identify kubernetes cluster provider using kubectl

我在一個 k8s 守護程序集上工作,其部署要求根據 k8s 集群提供程序類型更改某些值(gke、eks、aks、minikube、k3s、種類、使用 kubeadm 在 vm 上安裝的自我管理 k8s 等) .

鑒於kubectl/kubeconfig已配置,識別 k8s 集群提供程序類型的正確方法是什么?

一種選擇是使用kubectl config current-context view

CURRENT_CONTEXT_NAME="$(kubectl config current-context view)"
PLATFORM="self-managed"

autoDetectEnvironment(){
    if [[ -z "$CURRENT_CONTEXT_NAME" ]]; then
        echo "no configuration has been provided"
        return
    fi  

    echo "Autodetecting environment"
    if [[ $CURRENT_CONTEXT_NAME =~ ^minikube.* ]]; then
        PLATFORM="minikube"
    elif [[ $CURRENT_CONTEXT_NAME =~ ^gke_.* ]]; then
        PLATFORM="gke"
    elif [[ $CURRENT_CONTEXT_NAME =~ ^kind-.* ]]; then
        PLATFORM="kind"
    elif [[ $CURRENT_CONTEXT_NAME =~ ^k3d-.* ]]; then
        PLATFORM="k3d"
        elif [[ $CURRENT_CONTEXT_NAME =~ ^kubernetes-.* ]]; then
                PLATFORM="self-managed"
        else
                echo "No k8s cluster configured or unknown env!"
                exit 2
        fi  
}

但是,這似乎很老套,並且確信它不會在所有情況下都有效。 例如,對於 EKS,我無法弄清楚要使用什么正則表達式。

是的 grepping gke 正在為我工作$ kubectl get nodes -o wide | awk '{print $1}' | grep -e "gke" $ kubectl get nodes -o wide | awk '{print $1}' | grep -e "gke" $ kubectl get nodes -o wide | awk '{print $1}' | grep -e "gke"但是應該有一種更好的方式來獲取雲提供商,我還嘗試kubectl get nodes -o wide that in output of OS-IMAGE column 說提供商

~$ kubectl get nodes -o wide | awk '{print $8,$9,$10,$11}'
OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME 
Container-Optimized OS from Google
Container-Optimized OS from Google
Container-Optimized OS from Google

暫無
暫無

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

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