如何启动/重启Kubernetes API Server并添加用户名密码认证
完成Kubernetes Web UI基础认证访问的完整步骤
嘿,作为K8s新手能自己动手配置API Server的认证,已经迈出很棒的一步啦!我看你已经开始修改/etc/kubernetes/manifests/kube-apiserver.yaml来开启基础认证,但给出的配置有点不完整,我来帮你补全后续的关键步骤,确保能顺利在笔记本浏览器访问Web UI:
1. 补全基础认证文件的配置
你写的--basic-auth-file=/etc/kuber应该是路径没写完,咱们先创建完整的认证文件:
- 首先在主节点创建认证CSV文件,路径建议设为
/etc/kubernetes/basic-auth.csv,文件格式为用户名,密码,UID,用户组,示例内容:admin,YourStrongPassword123,10001,system:masters - 给这个文件设置合适的权限,保证kube-apiserver能读取:
chmod 640 /etc/kubernetes/basic-auth.csv chown root:root /etc/kubernetes/basic-auth.csv
2. 修正kube-apiserver的配置参数
打开/etc/kubernetes/manifests/kube-apiserver.yaml,找到command字段下的参数列表,把不完整的参数补全:
- --authentication-mode=basic - --basic-auth-file=/etc/kubernetes/basic-auth.csv
修改完成后,kubelet会自动重启kube-apiserver静态Pod,不需要手动重启服务,你可以用kubectl get pods -n kube-system观察状态,直到apiserver Pod恢复Running状态。
3. 配置Web UI(Dashboard)的访问权限
如果还没部署Dashboard,先完成部署:
- 用kubectl部署官方Dashboard的资源(你可以从Kubernetes官方文档获取对应的YAML内容,保存到本地后执行):
kubectl apply -f dashboard-recommended.yaml - 给你创建的admin用户绑定集群管理员权限,创建一个ClusterRoleBinding配置文件
admin-rbac.yaml:
执行部署命令:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: User name: admin apiGroup: rbac.authorization.k8s.iokubectl apply -f admin-rbac.yaml
4. 从笔记本浏览器访问Dashboard
- 在主节点执行端口转发命令,把Dashboard服务的端口暴露出来(允许外部访问):
kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8443:443 --address 0.0.0.0 - 打开笔记本浏览器,访问
https://<主节点IP>:8443,在登录界面选择「Basic Auth」,输入你在basic-auth.csv里设置的用户名和密码,就能成功进入Web UI了。
注意事项
- 基础认证的密码是明文存储在CSV文件中的,仅建议在测试环境使用,生产环境更推荐使用令牌或者证书认证
- 不要随意把API Server的6443端口或Dashboard转发端口暴露在公网,避免安全风险
- 如果主节点有防火墙,记得开放对应的端口(比如6443、8443),否则笔记本无法连接
内容的提问来源于stack exchange,提问作者kz28




