当前位置: 首页 > 知识库问答 >
问题:

如何使用kubectl识别kubernetes群集提供程序

充修能
2023-03-14

我在k8s守护程序上工作,其部署需要根据k8s群集提供程序类型(gke、eks、aks、minikube、k3s、kind、在vm上使用kubeadm安装的自我管理k8s等)更改某些值。

如果已经配置了kubectl/kubeconfig,那么确定k8s集群提供程序类型的正确方法是什么?

一个选项是使用kubectl配置当前上下文视图

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  
}

然而,这似乎是hacky,我确信它不会在所有情况下工作。例如,对于EKS,我不知道使用什么正则表达式。

共有1个答案

夏骞尧
2023-03-14

是的,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
 类似资料:
  • 我的http://localhost:8080/上有一个jenkins,我创建了一个项目,该项目将运行kubectl命令,使用(minikube)连接到kubernetes集群 我正在尝试运行windows命令C:\Program Files(x86)\Jenkins\workspace\test2 这是Kubernetes主机正在运行的minikube群集信息https://192.168.99

  • 随着库伯内特斯集群的启动和运行,并且能够通过ssh键访问master并在那里运行kubectl命令;我想在我的本地机器上运行kubectl命令。所以我尝试按照kubectl配置设置配置: 激活上下文: 当我运行kubectl命令时: 它返回: 与服务器localhost:8080的连接被拒绝-是否指定了正确的主机或端口?

  • 我有一个在Azure上运行的kubernetes集群。从本地kubectl命令访问集群的方式是什么。我在这里提到过,但是在kubernetes主节点上没有kube配置文件。此外,kubectl配置视图在

  • 我正在Kubernetes系统上配置Jenkins。建造起来很好。但为了部署,我们需要调用库贝特尔或赫尔姆。当前,我正在使用 Lachlanevenson/k8s-kubectl:v1.8.8 Lachlanevenson/K8S-Helm:最新 你能告诉我出了什么问题吗? 谢谢,

  • 我们正在将ruby微服务迁移到kubernetes,我们过去在中保存特定于环境的配置。使用kubernetes,您可以为每个服务创建特定于环境的文件,例如等。 虽然kubernetes的pod配置文件能够保存环境变量,但您似乎不能在其中保存结构化数据。 例如,在中,我们有 在kubernetes中继续这种实践并在中打破环境是否合理,或者kubernetes是否有一些其他的最佳实践来为POD提供结构

  • 我们使用 Giantswarm 开源的 kubernetes-promethues 来监控 kubernetes 集群,所有的 YAML 文件可以在 ../manifests/prometheus 目录下找到。 需要用到的镜像有: harbor-001.jimmysong.io/library/prometheus-alertmanager:v0.7.1 harbor-001.jimmysong.