Kubernetes 为什么kubectl不要求密码?
为什么kubectl不要求密码Kubernetes 为什么kubectl不要求密码?,kubernetes,kubectl,Kubernetes,Kubectl,为什么kubectl不要求密码 我已经用kubeadm在我的服务器上创建了一个kubernetes集群 然后我在本地机器上安装了kubectl 并将/etc/kubernetes/admin.conf的内容从我的服务器复制到本地机器上的~/.kube/config文件中 现在我可以使用kubectl从本地机器访问自己的集群,而不需要密码?为什么会这样 当我想通过ssh访问我的服务器时,我当然需要一个用户/密码或一个允许的ssh密钥。为什么kubectl不向我要密码? 在我看来,这似乎是不安全
- 我已经用kubeadm在我的服务器上创建了一个kubernetes集群
- 然后我在本地机器上安装了kubectl
- 并将/etc/kubernetes/admin.conf的内容从我的服务器复制到本地机器上的~/.kube/config文件中
在我看来,这似乎是不安全的 Kubernetes支持不同的身份验证策略,定义如下 通常,Kubernetes集群使用
客户端证书身份验证
。如果查看~/.kube/config
文件,您将看到类似以下内容的字段:
- name: kubernetes-admin
user:
client-certificate-data: <BASE64 ENCODED X509 CERTIFICATE>
client-key-data: <BASE64 ENCODED PRIVATE KEY FOR THE CERTIFICATE>
-名称:kubernetes管理员
用户:
客户端证书数据:
客户端密钥数据:
您可以看到kubernetes admin
用户拥有客户机证书数据和密钥。此证书受群集的证书颁发机构(CA)
信任
当您使用
kubectl
时,它会将用户的客户端证书数据
发送到您的集群,而您的集群CA
会验证它。如果客户端已验证,则可以访问群集。您知道-您可以使用ssh密钥访问服务器,而无需输入密码,对吗?是的,只有在我的ssh私钥没有密码的情况下-对吗?这是“”类型的身份验证。简单地说,该算法允许使用公钥/非私钥来使用数学运算验证私钥/私钥所有者的身份。但是在我的工作站上复制kubernetes/admin.conf就像将根密码从我的服务器复制到本地文件系统中一样。这是我不明白的。所以把它放在服务器上,然后从那里命令k8s集群。在其他方面,kubeconfig中的帐户可以具有不同的权限集(不是根权限集)或在webhook模式下工作(但主题不同)。客户端证书是一个选项,但肯定不是最常见的,OIDC是迄今为止最常见的身份验证选项。kubectl的客户端证书通常不是一个好主意,因为没有撤销模型。谢谢您的回答。我现在更好地理解了它,但管理访问似乎不是那么容易。我找到了创建客户端证书的方法。但这不是一个简单的方法。我想我可以在kubernetes主节点的任何地方提供我的公共ssh密钥,以便使用api服务器和我的私钥。