【问题标题】:How to do authentication when create new context for the cluster of standalone k8s server which docker desktop includes为docker桌面包含的独立k8s服务器集群创建新上下文时如何进行身份验证
【发布时间】:2020-11-02 18:08:32
【问题描述】:

我正在使用 docker desktop 包含的独立 Kubernetes 服务器和客户端。

我为 k8s 创建了两个命名空间:developmentproduction

☁  kubernetes-labs [master] ⚡  k get namespace
NAME              STATUS   AGE
default           Active   3d22h
development       Active   2d23h
kube-node-lease   Active   3d23h
kube-public       Active   3d23h
kube-system       Active   3d23h
production        Active   5m1s

然后,设置一个名为kubernetes-labs的新集群:

☁  kubernetes-labs [master] ⚡  k config set-cluster kubernetes-labs --server=https://kubernetes.docker.internal:6443
Cluster "kubernetes-labs" set.

如您所见,新集群的服务器指向https://kubernetes.docker.internal:6443,由独立的 Kubernetes 服务器使用。

接下来,创建了两个上下文:

☁  kubernetes-labs [master] ⚡  kubectl config set-context kubernetes-labs-dev --cluster=kubernetes-labs --namespace=development --user=dev
Context "kubernetes-labs-dev" modified.
☁  kubernetes-labs [master] ⚡  kubectl config set-context kubernetes-labs-prod --cluster=kubernetes-labs --namespace=production --user=prod
Context "kubernetes-labs-prod" created.

切换到kubernetes-labs-dev 上下文:

☁  kubernetes-labs [master] ⚡  k config use-context kubernetes-labs-dev
Switched to context "kubernetes-labs-dev".

现在,当我尝试从当前命名空间获取 pod 时:

☁  kubernetes-labs [master] ⚡  k get pods                                                                           
Please enter Username: dev
Please enter Password: 

需要认证,不知道usernamepassword应该输入什么。

此外,当我尝试查看当前上下文使用的配置时,出现错误。

☁  kubernetes-labs [master] ⚡  k config view --minify=true    
error: cannot locate user dev

【问题讨论】:

  • 您是否为新上下文定义了用户和密码?
  • @WytrzymałyWiktor 我所做的所有命令都在问题中提供。

标签: docker kubernetes


【解决方案1】:

为了让它工作,你需要Configure Access to Multiple Clusters:

此页面展示了如何使用配置对多个集群的访问 配置文件。在您的集群、用户和上下文 在一个或多个配置文件中定义,可以快速切换 使用 kubectl config use-context 命令在集群之间。

您需要确保您的配置文件是正确的。配置文件描述集群、用户和上下文。然后,您可以将用户详细信息添加到配置文件中,例如:

kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile
kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password

对上下文也可以这样做,例如:

kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer
kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer
kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter

和集群,例如:

kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file
kubectl config --kubeconfig=config-demo set-cluster scratch --server=https://5.6.7.8 --insecure-skip-tls-verify

请记住,您需要在您的环境中设置正确的证书文件路径名,才能使配置文件正常工作。

另外,请记住:

每个上下文都是一个三元组(集群、用户、命名空间)。例如, dev-frontend 上下文说,“使用开发人员用户的凭据 访问开发集群的前端命名空间”。

您可以在链接文档中找到更多详细信息和示例。分步指南将使您更容易正确设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多