首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于与多个物理集群对话的kubectl命令

用于与多个物理集群对话的kubectl命令
EN

Stack Overflow用户
提问于 2022-08-16 17:37:56
回答 3查看 168关注 0票数 1

这是我的~/.kube/config文件:

代码语言:javascript
复制
apiVersion: v1
clusters:
- cluster:
    server: https://192.168.10.190:6443
  name: cluster-1
- cluster:
    server: https://192.168.99.101:8443
  name: cluster-2
contexts:
- context:
    cluster: cluster-1
    user: kubernetes-admin-1
  name: cluster-1
- context:
    cluster: cluster-2
    user: kubernetes-admin-2
  name: cluster-2
kind: Config
preferences: {}
users:
- name: kubernetes-admin-1
  user:
    client-certificate: /home/user/.minikube/credential-for-cluster-1.crt
    client-key: /home/user/.minikube/credential-for-cluster-1.key
- name: kubernetes-admin-2
  user:
    client-certificate: /home/user/.minikube/credential-for-cluster-2.crt
    client-key: /home/user/.minikube/credential-for-cluster-2.key

我的理解是,cluster-1cluster-2是kubernetes物理集群(Control Plane)。

每个物理集群都有多个虚拟集群(Namespaces)。

如果我的理解是正确的,那么使用上面的kubeConfigkubectl语法是获取集群中所有名称空间的

EN

回答 3

Stack Overflow用户

发布于 2022-08-16 18:11:33

简单地说,您可以在kubeconfig中的现有集群中获得所有ns

代码语言:javascript
复制
for context in $(kubectl config view -o jsonpath='{.clusters[*].name}'); do 
kubectl config use-context $context ;
kubectl get ns;
done
#or
for context in $(kubectl config view -o jsonpath='{.clusters[*].name}'); do kubectl config use-context $context ;kubectl get ns;done

您可以使用下面的命令(当前上下文)从每个集群中获取所有命名空间

代码语言:javascript
复制
kubectl get namespace

上面的内容将在当前上下文中返回namespace,因此您有两个集群,这意味着您需要两个不同的上下文才能从两个集群中获取所有的命名空间。

kubeconfig文件中的上下文元素用于以方便的名称对访问参数进行分组。每个上下文都有三个参数:集群、命名空间和用户。默认情况下,kubectl命令行工具使用来自当前上下文的参数与集群通信。

组织-集群-访问-kubeconfig-上下文

名称空间就是资源的隔离。例如

不能在单个名称空间中创建具有相同名称的两个部署,因为这些资源是名称空间作用域的

因此,您可以在developstageproduction命名空间中部署多个部署。

kubernetes-名称空间

票数 2
EN

Stack Overflow用户

发布于 2022-08-16 18:02:09

在kubernetes中,没有物理或虚拟集群这样的东西。库贝贡图由三部分组成。

  • 簇群
  • 用户
  • 语境
  1. 集群- k8s集群由不同的VM/on-prem节点组成
  2. 用户--访问集群的用户可以是kube-admin,也可以是普通的开发人员。用户可以拥有定义用户可以操作哪些资源的角色(RBAC)。
  3. contexts --一个集群和一个用户之间的链接,因为您使用一个集群作为用户。

现在,对于名称空间,它们的工作方式类似于linux网络名称空间。把它想象成一栋房子里面住着一家人。如果你住的房子里有一个鲍勃·纽曼,你就叫他鲍勃。如果鲍勃住在另一所房子里,你会把他称为鲍勃·纽曼。名称空间在逻辑上将集群内的资源分割开来。您可以拥有例如监视名称空间、工资单名称空间、后端名称空间。这房子不一样

票数 1
EN

Stack Overflow用户

发布于 2022-08-16 18:02:36

希望这个答案能帮助你:

使用上下文管理多个集群

假设我们有多个集群要管理员,所以我们有多个kubeconfig文件。

但是每次使用--kubeconfig选项使用kubectl命令都不是那么有效!

使用上下文访问多个集群

  • 在1 kubeconfig文件中定义所有集群和用户
  • 为每个集群定义一个上下文
  • 我们可以使用这些上下文在集群之间切换。
  • 不需要指定kube konfig文件

什么是语境?

在kubeconfig文件中,我们有:

  • K8s集群列表
  • K8s用户列表
  • kubeconfig文件中引用它们的名称
  • 我们还有Context

上下文

  • 哪个用户应该访问哪个集群的组合
  • 或者“使用kubernetes-admin用户的凭据访问kubernetes集群”
  • 我们通过任何一种方式与它交互:
    • 手动更新kubeconfig
    • 或者使用kubectl config命令

  • 如何切换上下文?kubectl配置使用-上下文
  • 显示上下文列表- kubectl配置get-上下文
  • 显示current-context kubectl配置当前上下文

上下文中的命名空间

每个上下文实际上由3个组件组成。

  • 集群
  • 用户
  • 命名空间
  • 默认情况下,将配置default命名空间。
  • 除了默认命名空间之外,我们还需要定义它们。

假设大多数情况下,我们使用的是一个特定的名称空间(default除外),并且对每个kubectl命令使用--namespace会有些烦人.

  • 切换默认名称空间kubectl配置集-上下文-当前命名空间kube-system
  • 现在检查~/.kube/config文件上下文:- context:集群: kubernetes命名空间:kubernetes#刚刚添加!用户:kubernetes-管理名称: kubernetes-admin@kubernetes
  • Kubernetes博士
  • 经认证的Kubernetes管理员
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73378096

复制
相关文章

相似问题

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