首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes:通过kubectl命令更改当前/默认上下文

kubernetes:通过kubectl命令更改当前/默认上下文
EN

Stack Overflow用户
提问于 2021-12-07 09:55:49
回答 2查看 4.7K关注 0票数 3

我正在做一个来自KodeKoud的练习,它提供了CKAD认证培训。

该练习的my-kube-config.yml文件位于root/下面。文件内容如下:

(我排除了一些不相关的部分)

代码语言:javascript
复制
apiVersion: v1
kind: Config

clusters:
- name: production
  cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://controlplane:6443

- name: development
  cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://controlplane:6443

- name: test-cluster-1
  cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://controlplane:6443

contexts:

- name: test-user@production
  context:
    cluster: production
    user: test-user

- name: research
  context:
    cluster: test-cluster-1
    user: dev-user

users:
- name: test-user
  user:
    client-certificate: /etc/kubernetes/pki/users/test-user/test-user.crt
    client-key: /etc/kubernetes/pki/users/test-user/test-user.key
- name: dev-user
  user:
    client-certificate: /etc/kubernetes/pki/users/dev-user/developer-user.crt
    client-key: /etc/kubernetes/pki/users/dev-user/dev-user.key


current-context: test-user@development

这项工作要求我:

使用dev-user访问test-cluster-1。将当前的上下文设置为正确的上下文,这样我就可以这样做了。

由于我在配置文件中看到了一个名为research的上下文,它满足了需求,所以我运行以下命令将当前上下文更改为必需的上下文:

代码语言:javascript
复制
kubectl config use-context research

但是控制台给了我错误:error: no context exists with the name: "research"

好吧,我猜可能name的值research是不能接受的,也许我必须遵循<user-name>@<cluster-name>的惯例?我不确定,但随后我尝试了以下几点:

  1. I将名称从research修改为dev-user@test-cluster-1,使上下文部分变为:

代码语言:javascript
复制
- name: dev-user@test-cluster-1
  context:
    cluster: test-cluster-1
    user: dev-user

  1. 之后,我运行命令:kubectl config use-context dev-user@test-cluster-1,但是我得到了错误:

代码语言:javascript
复制
error: no context exists with the name: "dev-user@test-cluster-1"

为什么?根据课程材料,这是为默认的/当前的上下文的方法。我所用的课程是否过时了?有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2022-04-08 09:24:57

你最初的想法是正确的。您需要将上下文更改为research,这可以使用

kubectl配置使用-上下文研究

但是,该命令不会应用于此实例中的正确配置。通过检查指向my-kube-config文件的kubeconfig和不带kubeconfig的当前上下文,您可以看到两者之间的区别。

kubectl配置当前-上下文

kubernetes-admin@kubernetes kubectl config -kubeconfig=/root/my-kube-config当前-上下文

test-user@development

因此,使用正确的kubeconfig运行use-context命令

kubectl config --kubeconfig=/root/my-kubeconfig使用-上下文研究

票数 2
EN

Stack Overflow用户

发布于 2021-12-08 08:17:47

要更改上下文,必须使用配置数据编辑$HOME/.kube/config文件,并与默认数据合并。我试图复制您的配置文件,可以更改上下文,但是您的配置文件看起来非常奇怪。

请参阅我的控制台中的行以供参考:

代码语言:javascript
复制
bazhikov@cloudshell:~ (nb-project-326714)$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://controlplane:6443
  name: development
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://35.246.22.167
  name: gke_nb-project-326714_europe-west2_cluster-west2
...
...
...
- name: test-user
  user:
    client-certificate: /etc/kubernetes/pki/users/test-user/test-user.crt
    client-key: /etc/kubernetes/pki/users/test-user/test-user.key
bazhikov@cloudshell:~ (nb-project-326714)$ kubectl config use-context research
Switched to context "research".

如果您不想破坏您的集群配置:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70258039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档