未设置Kubernetes上下文

时间:2018-11-20 13:34:32

标签: kubernetes

我有这个配置文件

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/

我做对了。我想念什么吗?

3 个答案:

答案 0 :(得分: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}

此后,您将可以访问集群。希望这会有所帮助。

答案 1 :(得分:1)

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

当我执行时:

 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.

答案 2 :(得分:0)

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

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

更多信息:

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