概述
kubectl命令访问集群时,默认情况下在$HOME/.kube目录下寻找名为config的配置文件,配置文件中包含集群ip地址、端口号、用户名、密码、证书、名称空间等信息,kubectl据此建构访问集群的上下文。也可以通过KUBECONFIG环境变量或者--kubeconfig覆盖默认配置文件。在实际应用中,往往需要同时使用多套环境如开发、测试、显示、生产等。一个kubectl客户端需要使用多个用户、多种认证授权机机制,访问不同集群、不同名称空间。Kubernetes通过Kubeconfig为kubectl命令组织管理各种不同的接入场景。
场景
假设有两个集群,一个用于开发,称为development集群。另一个用于测试,称为scrach集群。在development集群中,前端开发工作在fronted名称空间下,存储开发工作在storage名称空间下。在scrach集群中,默认工作在default名称空间下,用户可根据需要自行创建名称空间。访问development集群使用证书进行身份认证,scrach集群使用用户名密码。
定义集群、用户、上下文
创建config-exercise目录,在目录下创建文件config-demo,加入如下内容:
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
name: development
- cluster:
name: scratch
users:
- name: developer
- name: experimenter
contexts:
- context:
name: dev-frontend
- context:
name: dev-storage
- context:
name: exp-scratch
以上内容涉及两个集群、两个用户、三种访问上下文,它是组织管理多用户多集群接入的框架,只是定义了名称,需要在后续操作中加入具体内容。
进入config-exercise目录,添加与集群有关的详细信息: