【问题标题】:How to identify kubernetes cluster provider using kubectl如何使用 kubectl 识别 kubernetes 集群提供者
【发布时间】:2022-01-02 23:45:40
【问题描述】:

我在一个 k8s 守护程序集上工作,其部署要求根据 k8s 集群提供程序类型更改某些值(gke、eks、aks、minikube、k3s、kind、使用 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,我无法弄清楚要使用什么正则表达式。

【问题讨论】:

  • 看看这篇文章是否回答了你的问题stackoverflow.com/a/62542265/15964308
  • 我不认为我可以使用kubectl config view --minify -o jsonpath='{.clusters[].name}' ...例如,在eks上我得到demo2-kubearmor-ub20.us-east-2.eksctl.io,在gke上我得到gke_mimetic-kit-294408_us-central1-c_accuknox-saas-dev ....我不确定是否grepping“eksctl或gke”的名字将是一件明智的事情。你觉得还可以吗?

标签: kubernetes kubectl


【解决方案1】:

是的 grepping gke 正在为我工​​作 $ kubectl get nodes -o wide | awk '{print $1}' | grep -e "gke" 但是应该有一种更奇特的方式来获取云提供商,我也尝试了 kubectl get nodes -o wide 在 OS-IMAGE 列的输出中显示提供商

~$ 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

【讨论】:

  • 谢谢。但我正在寻找一种能够始终与 EKS、GKE、minikube、k3s、microk8s、AKS 等一起使用的解决方案……结果证明,没有单一的解决方案!在上面的示例中,您使用的是 Google 的 COS。如果使用的图片不是COS,是ubuntu怎么办!
猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 2020-08-05
  • 2018-12-28
  • 1970-01-01
  • 2016-04-06
  • 2020-06-05
  • 2018-10-19
相关资源
最近更新 更多