kubectl上下文与集群

时间:2019-05-24 20:54:54

标签: kubernetes kubectl 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 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

4 个答案:

答案 0 :(得分:9)

集群

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

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

Clusters data table

rewanth@ubuntu:~$ cat ~/.kube/config
...
clusters:
- cluster:
    certificate-authority: /home/rewanth/.minikube/development-ca.crt
    server: https://192.168.177.136:8443
  name: development
...

用户

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

Users data table

rewanth@ubuntu:~$ cat ~/.kube/config
...
users:
- name: admin
  user:
    client-certificate: /home/rewanth/.minikube/admin.crt
    client-key: /home/rewanth/.minikube/admin.key
...

上下文

因此,用户必须同时提供cluster证书和user证书,才能在目标资源上验证和运行工作负载。

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

  • 一个用于群集的CA证书
  • 用户的两个证书:私钥和公钥

上下文通过结合用户集群配置/证书使这项工作更加容易。

Context data table

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
...

因此,仅提及Context2意味着我们要以Development用户身份登录admin集群。

Context4意味着我们想以private用户身份登录development集群中的user1名称空间。

Context1意味着我们要以staging用户身份登录user1集群。

重要提示

上下文不会创建新的用户/集群。上下文只是设置了一个新的映射,使在多个集群之间切换变得更加容易。

答案 1 :(得分:2)

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

用户定义用于连接集群的凭据。

上下文同时定义了群集和用户。

答案 2 :(得分:1)

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

上下文:上下文只是一组访问参数,包含Kubernetes集群,用户和名称空间。

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

答案 3 :(得分:1)

来自https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#kubeconfig

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

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