k8s context & kubeconfig

发布时间 2023-04-20 20:05:41作者: liwenchao1995

k8s context & kubeconfig

context

在 Kubernetes 中,一个 "context" 是一个包含了一组集群、用户和命名空间的命名集合。kubectl context 命令用于管理这些上下文,并允许你在不同的 Kubernetes 集群之间切换,或者使用不同的用户和命名空间。

每个 context 包含以下信息,kubeconfig文件里配置:

  • 集群:用于连接到 Kubernetes API Server 的地址和证书。
  • 用户:用于身份验证的用户名和密码、客户端证书、客户端密钥等。
  • 命名空间:用于隔离资源的逻辑空间。
    通过 kubectl config 命令,可以查看、创建、修改和删除 context。其中,kubectl config get-contexts 命令可以列出所有可用的 context,kubectl config use-context 命令可以切换到指定的 context。

当使用 kubectl 命令时,可以通过 --context 选项指定要使用的 context。例如,使用以下命令在指定的 context 中创建一个新的 Deployment:

kubectl --context=my-context create deployment my-deployment --image=my-image

在上面的命令中,--context 选项指定了要使用的 context,my-context 是 context 的名称。这将在 my-context context 中创建一个新的 Deployment,并使用指定的镜像。

通过使用 context,可以方便地在不同的 Kubernetes 集群、用户和命名空间之间切换,从而简化了在 Kubernetes 中进行开发和部署的工作。

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM0VENDQWNtZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcw
    server: https://192.168.10.30:6443
  name: local
contexts:
- context:
    cluster: local
    user: kube-admin-local
  name: local
current-context: local
kind: Config
preferences: {}
users:
- name: kube-admin-local
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDakNDQWZLZ0F3SUJBZ0lJWDNDSmRzclJaTmt3RFFZ
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdWpmMGxCd20vbTZiQlpvN
	
	
//apiVersion:该字段指定此配置文件所针对的 Kubernetes API 版本。
//clusters:该字段包含可以被此配置文件定位的 Kubernetes 集群列表。在本例中,只有一个名为 local 的集群。
//cluster:该字段指定特定集群的配置详细信息。它包括用于验证服务器的服务器 URL 和证书授权。
//certificate-authority-data:该字段包含 base64 编码的证书授权数据。
//server:该字段指定此集群的 Kubernetes API 服务器的 URL。
//contexts:该字段包含可以与此配置文件一起使用的上下文列表。上下文包括一个集群和一个用户,并定义应使用哪个集群和用户来执行任何使用此上下文执行的 Kubernetes 命令。
//context:该字段指定特定上下文的配置详细信息。在本例中,只有一个名为 local 的上下文。
//user:该字段指定要用于此上下文的用户。在本例中,用户名为 kube-admin-local。
//client-certificate-data:该字段包含用于验证用户的 base64 编码的客户端证书数据。
//client-key-data:该字段包含用于验证用户的 base64 编码的客户端密钥数据。