Kubernetes 上下文未设置

pra*_*432 8 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: []
Run Code Online (Sandbox Code Playgroud)

我运行这个命令

kubectl config --kubeconfig=kube-config use-context staging-api
Run Code Online (Sandbox Code Playgroud)

我收到这条消息

Switched to context "staging-api".
Run Code Online (Sandbox Code Playgroud)

然后我跑

kubectl get pods
Run Code Online (Sandbox Code Playgroud)

我收到这条消息

The connection to the server localhost:8080 was refused - did you specify the right host or port?
Run Code Online (Sandbox Code Playgroud)

据我从文档中可以看出

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

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

Pra*_*dha 3

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

您需要在以下变量中设置集群名称、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}
Run Code Online (Sandbox Code Playgroud)

之后您将能够访问集群。希望这可以帮助。