通过复制 kubectl 客户端配置 (kubeconfig),客户端访问运行中的 Kubernetes 集群可以共享。该配置位于 $HOME/.kube/config,由 cluster/kube-up.sh 生成。下面是共享 kubeconfig 的步骤。

  1. 创建集群
  1. $ cluster/kube-up.sh
  1. 复制 kubeconfig 到新主机
  1. $ scp $HOME/.kube/config user@remotehost:/path/to/.kube/config
  1. 在新主机上,让复制的 config 在使用 kubectl 时生效
  • 选择 A:复制到默认的位置
  1. $ mv /path/to/.kube/config $HOME/.kube/config
  • 选择 B:复制到工作目录(运行 kubectl 的当前位置)
  1. $ mv /path/to/.kube/config $PWD
  • 选项 C:通过环境变量 KUBECONFIG 或者命令行标志 kubeconfig 传递给 kubectl
  1. # via environment variable
  2. $ export KUBECONFIG=/path/to/.kube/config
  3.  
  4. # via commandline flag
  5. $ kubectl ... --kubeconfig=/path/to/.kube/config

手动创建 kubeconfig

kubeconfig 由 kube-up 生成,但是,您也可以使用下面命令生成自己想要的配置(可以使用任何想要的子集)

  1. # create kubeconfig entry
  2. $ kubectl config set-cluster $CLUSTER_NICK \
  3. --server=https://1.1.1.1 \
  4. --certificate-authority=/path/to/apiserver/ca_file \
  5. --embed-certs=true \
  6. # Or if tls not needed, replace --certificate-authority and --embed-certs with
  7. --insecure-skip-tls-verify=true \
  8. --kubeconfig=/path/to/standalone/.kube/config
  9.  
  10. # create user entry
  11. $ kubectl config set-credentials $USER_NICK \
  12. # bearer token credentials, generated on kube master
  13. --token=$token \
  14. # use either username|password or token, not both
  15. --username=$username \
  16. --password=$password \
  17. --client-certificate=/path/to/crt_file \
  18. --client-key=/path/to/key_file \
  19. --embed-certs=true \
  20. --kubeconfig=/path/to/standalone/.kube/config
  21.  
  22. # create context entry
  23. $ kubectl config set-context $CONTEXT_NAME \
  24. --cluster=$CLUSTER_NICK \
  25. --user=$USER_NICK \
  26. --kubeconfig=/path/to/standalone/.kube/config

注:

  • 生成独立的 kubeconfig 时,标识 —embed-certs 是必选的,这样才能远程访问主机上的集群。
  • —kubeconfig 既是加载配置的首选文件,也是保存配置的文件。如果您是第一次运行上面命令,那么 —kubeconfig 文件的内容将会被忽略。
  1. $ export KUBECONFIG=/path/to/standalone/.kube/config
  • 上面提到的 ca_file,key_file 和 cert_file 都是集群创建时在 master 上产生的文件,可以在文件夹 /srv/kubernetes 下面找到。持有的 token 或者 基本认证也在 master 上产生。
    如果您想了解更多关于 kubeconfig 的详细信息,请查看使用 kubeconfig 配置集群访问认证,或者运行帮助命令 kubectl config -h。

合并 kubeconfig 的示例

kubectl 会按顺序加载和合并来自下面位置的配置

  • —kubeconfig=/path/to/.kube/config 命令行标志
  • KUBECONFIG=/path/to/.kube/config 环境变量
  • $HOME/.kube/config 配置文件
    如果在 host1 上创建集群 A 和 B,在 host2 上创建集群 C 和 D,那么,您可以通过运行下面命令,在两个主机上访问所有的四个集群
  1. # on host2, copy host1's default kubeconfig, and merge it from env
  2. $ scp host1:/path/to/home1/.kube/config /path/to/other/.kube/config
  3.  
  4. $ export KUBECONFIG=/path/to/other/.kube/config
  5.  
  6. # on host1, copy host2's default kubeconfig and merge it from env
  7. $ scp host2:/path/to/home2/.kube/config /path/to/other/.kube/config
  8.  
  9. $ export KUBECONFIG=/path/to/other/.kube/config

如果希望查看更加详细的例子以及关于 kubeconfig 加载/合并规则的描述,请您参考 kubeconfig-file

译者:chentao1596

原文:https://k8smeetup.github.io/docs/tasks/administer-cluster/share-configuration/

K8S中文社区微信公众号

原文: http://docs.kubernetes.org.cn/721.html