【问题标题】:Kubernetes context is not set未设置 Kubernetes 上下文
【发布时间】:2020-07-24 03:15:35
【问题描述】:

我有这个配置文件

apiVersion: v1
clusters:
- cluster:
    server: [REDACTED] // IP of my cluster
  name: staging
contexts:
- context:
    cluster: staging
    user: ""
  name: staging-api
current-context: staging-api
kind: Config
preferences: {}
users: []

我运行这个命令

kubectl config --kubeconfig=kube-config use-context staging-api

我收到这条消息

Switched to context "staging-api".

然后我跑

kubectl get pods

我收到了这条消息

The connection to the server localhost:8080 was refused - did you specify the right host or port?

据我所知,文档

https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

我做得对。我错过了什么吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    是的,请尝试以下步骤来访问 Kubernetes 集群。此步骤假设您在 /etc/kubernetes 中有您的 k8s 证书。

    您需要在以下变量中设置集群名称、Kubeconfig、用户和 Kube 证书文件,然后只需运行这些命令:

    CLUSTER_NAME="kubernetes"
    KCONFIG=admin.conf
    KUSER="kubernetes-admin"
    KCERT=admin
    
    cd /etc/kubernetes/
    
    $ kubectl config set-cluster ${CLUSTER_NAME} \
      --certificate-authority=pki/ca.crt \
      --embed-certs=true \
      --server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 \
      --kubeconfig=${KCONFIG}
    
    $ kubectl config set-credentials kubernetes-admin \
      --client-certificate=admin.crt \
      --client-key=admin.key \
      --embed-certs=true \
      --kubeconfig=/etc/kubernetes/admin.conf
    
    $ kubectl config set-context ${KUSER}@${CLUSTER_NAME} \
      --cluster=${CLUSTER_NAME} \
      --user=${KUSER} \
      --kubeconfig=${KCONFIG}
    
    $ kubectl config use-context ${KUSER}@${CLUSTER_NAME} --kubeconfig=${KCONFIG}
    $ kubectl config view --kubeconfig=${KCONFIG}
    

    在此之后,您将能够访问集群。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您需要获取正在运行的集群的凭据。试试这个:

      gcloud container clusters get-credentials <cluster_name> --zone <zone_name>
      

      更多信息:

      https://cloud.google.com/sdk/gcloud/reference/container/clusters/get-credentials

      【讨论】:

        【解决方案3】:

        我遇到了标题中提到的同样问题。

        当我执行时:

         kubectl config current-context
        

        输出是:

        error: current-context is not set
        

        就我而言,这是缩进问题。
        current-context 之前的一个空格让我调试了几个小时:

        contexts:
        - context:
           cluster: arn:aws:eks:us-east-2:...:cluster/...
           user: arn:aws:eks:us-east-2:...:cluster/...
         name: arn:aws:eks:us-east-2:...:cluster/...
        current-context: arn:aws:eks:us-east-2:...:cluster/... <-Whitespace at the begging of the row was the source of the error.
        

        【讨论】:

        • 哪个文件的缩进不正确?是~/.kube/config吗?
        • @Marc,我相信。
        猜你喜欢
        • 1970-01-01
        • 2022-06-26
        • 1970-01-01
        • 2016-10-07
        • 2018-10-02
        • 1970-01-01
        • 2022-01-17
        • 2023-03-15
        • 2015-08-30
        相关资源
        最近更新 更多