Kubernetes kubectl上下文与集群

Kubernetes kubectl上下文与集群,kubernetes,kubectl,amazon-eks,Kubernetes,Kubectl,Amazon Eks,在kubectl和kubernetes配置的世界中,上下文和集群之间有什么区别?例如,我看到以下命令: Available Commands: current-context Displays the current-context delete-cluster Delete the specified cluster from the kubeconfig delete-context Delete the specified context from the kubeconf

在kubectl和kubernetes配置的世界中,上下文和集群之间有什么区别?例如,我看到以下命令:

Available Commands:
  current-context Displays the current-context
  delete-cluster  Delete the specified cluster from the kubeconfig
  delete-context  Delete the specified context from the kubeconfig
  get-clusters    Display clusters defined in the kubeconfig
  get-contexts    Describe one or many contexts
  rename-context  Renames a context from the kubeconfig file.
  set             Sets an individual value in a kubeconfig file
  set-cluster     Sets a cluster entry in kubeconfig
  set-context     Sets a context entry in kubeconfig
在.kube/config中,我看到:

- context:
    cluster: arn:aws:eks:us-west-2:91XXXXXXX71:cluster/ignitecluster
    namespace: ignite
    user: arn:aws:eks:us-west-2:91XXXXXXX71:cluster/ignitecluster
  name: arn:aws:eks:us-west-2: 91XXXXXXX71:cluster/ignitecluster

集群为集群的Kubernetes API定义连接端点

用户定义连接到群集的凭据


上下文定义集群和用户。

集群:Kubernetes使用共享网络将单个物理或虚拟机聚集到一个集群中,以在每个服务器之间进行通信。该集群是配置所有Kubernetes组件、功能和工作负载的物理平台

上下文:上下文只是一组包含Kubernetes群集、用户和命名空间的访问参数

当前上下文是当前kubectl的默认集群,所有kubectl命令都针对该集群运行。

来自:

因此,contextX={clusterX,userX,namespaceX}

Clusters 集群是配置所有Kubernetes组件、功能和工作负载的地方

Kubernetes中的集群由各自的证书颁发机构(CA)证书标识。例如,假设你有三个集群

使用者 Kubernetes中的用户由其各自的客户端/用户证书标识。例如,假设您有三个用户

上下文 因此,用户必须同时提供
集群
证书和
用户
证书,以便在目标资源上验证和运行工作负载

我们需要提供三个证书来在任何集群上运行工作负载

  • 群集的一个CA证书
  • 用户的两个证书:私钥和公钥
上下文通过组合用户集群配置/证书,使这项工作更加容易

因此,简单地引用
Context2
意味着我们希望以
admin
用户身份登录到
Development
集群

Context4
表示我们希望以
user1
用户身份登录
development
集群中的
private
命名空间

Context1
表示我们希望以
user1
user身份登录到
staging
集群

重要提示
上下文不会创建新用户/群集。上下文只需设置一个新的映射,使多个集群之间的切换更容易。

好的,因此集群是唯一的,上下文是集群和用户的组合。可能有多个上下文。但是,可以使用当前上下文下的“kubectl config view”命令检查当前引用的默认值:{context in use}。而且,每个上下文都是集群+用户+命名空间的组合。若集群中并没有提到名称空间,那个么它表示一个默认名称空间。
A context is a group of access parameters.
Each context contains a Kubernetes cluster, a user, and a namespace.
The current context is the cluster that is currently the default for kubectl:
all kubectl commands run against that cluster
rewanth@ubuntu:~$ cat ~/.kube/config
...
clusters:
- cluster:
    certificate-authority: /home/rewanth/.minikube/development-ca.crt
    server: https://192.168.177.136:8443
  name: development
...
rewanth@ubuntu:~$ cat ~/.kube/config
...
users:
- name: admin
  user:
    client-certificate: /home/rewanth/.minikube/admin.crt
    client-key: /home/rewanth/.minikube/admin.key
...
rewanth@ubuntu:~$ cat ~/.kube/config
...
contexts:
- context:
    cluster: staging
    user: user1
  name: Context1
- context:
    cluster: development
    user: admin
  name: Context2
- context:
    cluster: development
    namespace: private
    user: user1
  name: Context4
...