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 编码的客户端密钥数据。