在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
答案 0 :(得分:9)
集群是配置所有Kubernetes组件,功能和工作负载的地方。
Kubernetes中的集群由其各自的证书颁发机构(CA)证书标识。例如,假设您有三个集群。
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中的用户由其各自的客户端/用户证书标识。例如,假设您有三个用户。
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
证书,才能在目标资源上验证和运行工作负载。
我们需要提供三个证书才能在任何群集上运行工作负载。
上下文通过结合用户和集群配置/证书使这项工作更加容易。
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}