kubectl通过反向代理访问K8s集群返回Unauthorized错误如何解决?
问题根因
你遇到的Unauthorized报错与kubectl是否识别反向代理自定义证书无关,--insecure-skip-tls-verify参数已经跳过了反向代理的证书合法性校验,报错实际来自kube-apiserver的客户端认证逻辑:
- K8s默认使用TLS双向认证校验客户端身份,kubeconfig中存储的客户端证书、私钥是kubectl的身份凭证,只有集群的apiserver可以识别该凭证的合法性。
- 启用SSL透传时,反向代理仅做流量转发,kubectl直接和apiserver完成TLS双向握手,身份凭证可以正常被apiserver识别,因此请求正常。
- 关闭SSL透传、反向代理自行终结TLS时,TLS握手发生在kubectl和反向代理之间,且客户端私钥不会在TLS握手过程中对外传输,反向代理无法使用kubectl的身份凭证和后端apiserver完成双向认证,apiserver收不到合法的身份信息,直接返回未授权错误。
解决方案
要实现反向代理使用独立证书、关闭SSL透传的配置,可根据你的场景选择以下方案:
方案1:配置集群信任反向代理的身份透传
此方案无需修改客户端kubectl配置,原有kubeconfig可以直接使用,需要调整apiserver和反向代理的配置:
- 调整apiserver启动参数,启用请求头认证,信任反向代理传递的身份信息:
--requestheader-allowed-names=reverse-proxy-client # 替换为反向代理和apiserver通信时使用的客户端证书的CN名称 --requestheader-client-ca-file=/path/to/reverse-proxy-ca.crt # 替换为签发反向代理客户端证书的CA根证书路径 --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User
- 反向代理侧配置:先验证kubectl提交的客户端证书合法性,解析出证书中的用户名、用户组信息,通过上述配置的请求头传递给apiserver。反向代理和apiserver通信时使用自身的客户端证书(已被apiserver信任)完成双向认证。
方案2:客户端调整认证方式(适用于开发/测试场景)
如果你不方便修改集群和反向代理配置,可以将kubectl的认证方式改为token认证,同时配置对反向代理自定义证书的信任:
- 先在K8s集群中创建对应权限的ServiceAccount,获取访问token:
# 创建ServiceAccount示例 kubectl create serviceaccount proxy-admin -n kube-system # 绑定集群管理员权限(可根据实际需求调整权限范围) kubectl create clusterrolebinding proxy-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:proxy-admin # 获取ServiceAccount对应的token kubectl get secret $(kubectl get sa proxy-admin -n kube-system -o jsonpath='{.secrets[0].name}') -n kube-system -o jsonpath='{.data.token}' | base64 -d
- 修改本地
/root/.kube/config配置,删除原有client-certificate、client-key相关配置,替换为token配置,同时添加反向代理自定义证书的信任:
clusters: - cluster: certificate-authority: /path/to/your/reverse-proxy-custom.crt # 替换为反向代理自定义证书的本地路径 server: https://my.reverse.proxy:6443 name: kubernetes users: - name: kubernetes-admin user: token: 上一步获取到的token字符串 # 替换为实际的token值
配置完成后可以直接执行kubectl命令,不需要额外添加--insecure-skip-tls-verify参数。
内容的提问来源于stack exchange,提问作者Joey Cote
相关产品推荐
相关产品推荐

